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