1
PLSQLの挿入内にinsertステートメントを実行しようとしていますが、シーケンスを使用するテーブルのトリガーから生成されたIDを返すのですが、 私は、テーブルのPLSQLの挿入と返すIDフォームのタイプ
ORA-00905:欠落しているキーワード
ORA-06512: "ADMIN.F_INSERT_ORDER_DATA"、行で22
ORA-06512:行で5
CREATE OR REPLACE FUNCTION F_INSERT_ORDER_DATA (P_CUSTOMER_ID IN NUMBER,
P_NOTES IN VARCHAR2)
RETURN NUMBER
IS
vCreated_ON DATE := SYSDATE;
vORDER_ID NUMBER;
vSQL VARCHAR2 (1024);
BEGIN
vSQL := 'INSERT INTO orders'
||'(ORDER_ID,'
|| 'CUSTOMER_ID,'
|| 'NOTES,'
|| 'CREATED_BY,'
|| 'CREATED_ON)'
|| 'VALUES (NULL,' --ORDER_ID Filled by trigger
|| P_CUSTOMER_ID|| ',' --CUSTOMER_ID
|| ''''|| P_NOTES|| ''',' --NOTES
|| '''SYSTEM'',' --CREATED_BY
|| ''''|| vCREATED_ON|| ''')' --CREATED_ON
|| 'RETURNING ORDER_ID INTO vORDER_ID';
EXECUTE IMMEDIATE vSQL;
DBMS_OUTPUT.PUT_LINE(vORDER_ID);
RETURN (vORDER_ID);
END F_INSERT_ORDER_DATA;
/
呼び出し以下のような機能
declare
result varchar2(1024);
begin
-- Call the function
result := F_INSERT_ORDER_DATA (1000,'----');
end;
コード更新
CREATE OR REPLACE FUNCTION F_INSERT_ORDER_DATA (P_CUSTOMER_ID IN NUMBER,
P_NOTES IN VARCHAR2)
RETURN NUMBER
IS
vORDER_ID NUMBER;
vCreated_by VARCHAR2 (128) := 'SYSTEM';
vCreated_ON DATE := SYSDATE;
sql_stmt VARCHAR2 (1024);
BEGIN
sql_stmt :=
'INSERT INTO orders (ORDER_ID,
CUSTOMER_ID,
NOTES,
CREATED_BY,
CREATED_ON)
VALUES (NULL, --ORDER_ID Filled by trigger
:PCUSTOMER_ID, --CUSTOMER_ID
:PNOTES, --NOTES
:PCREATED_BY, --CREATED_BY
:PCREATED_ON, --CREATED_ON
RETURNING ORDER_ID INTO :vORDER_ID';
EXECUTE IMMEDIATE sql_stmt
USING P_CUSTOMER_ID,
P_NOTES,
VCreated_by,
vCreated_ON
RETURNING INTO vORDER_ID;
DBMS_OUTPUT.PUT_LINE (vORDER_ID);
RETURN (vORDER_ID);
END F_INSERT_ORDER_DATA;
/
あなたのコードを持ついくつかの問題があります
DECLARE
vSQL VARCHAR2 (4000);
var NUMBER;
BEGIN
vSQL := 'F_INSERT_ORDER_DATA(:P_CUSTOMER_ID,:P_NOTES);';
EXECUTE IMMEDIATE vSQL USING 1000, 'TEST' RETURNING INTO var;
DBMS_OUTPUT.PUT_LINE (var);
END;
私はあなたの提供されたリンクに従って自分のコードを更新しましたが、今は関数の部分を呼び出す際にエラーが発生しています... 'ORA-00900:無効なSQL文'とエラー 'ORA-06512:at line 7'あなたが見て気にしなければ私のために新しいです.thanks – sam
更新された投稿をチェックして、どのようにplsqlブロックの中であなたの関数を呼び出すことができます – XING
プロのスキルを持つ輝きのサポートに感謝...私は本当にあなたの優しさのサポートを感謝します: – sam