0
我有一个存储过程,如果它们存在更新记录,或者如果它们不存在,则添加一条新记录。如何在PL/SQL中使用`SELECT COUNT(*)`作为条件语句?
SQL:
CREATE OR REPLACE PROCEDURE ADDRECORD(ihost VARCHAR, iip VARCHAR)
AS
rc VARCHAR(4000);
ROWCOUNT NUMBER;
BEGIN
rc := 'select count(0) from myTable where physical_host = ihost and primary_ip = iip';
ROWCOUNT := to_number(rc, '99');
IF ROWCOUNT = 1 THEN
UPSERTRECORD(ihost, iip);
ELSE
INSERT INTO myTable(PHYSICAL_HOST, PRIMARY_IP)
VALUES (ihost, iip);
INSERT INTO IP (IP, IP_IND) VALUES (iip, 'V');
END IF;
END ADDRECORD;
的UPSERTRECORD
是被调用另一个存储过程。它工作正常。实际上,错误发生在包含to_number
的行上。错误是:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
是否有另一种方法可以做到这一点?对不起,我对SQL没有超级经验,但我需要弄清楚这一点。
你什么错误? – 2012-07-26 13:31:47
@ aleksey.berezan我更新了附带错误的详细信息。 – amlane86 2012-07-26 13:36:47
@HolgerBrandt我试过这样:'if rc = 1 then'仍然出错,所以我认为这不是正确的语法。 – amlane86 2012-07-26 13:38:04