レコードが存在する場合は更新し、存在しない場合は新しいレコードを追加するストアド プロシージャがあります。
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の経験が豊富ではありませんが、これを理解する必要があります.