Ich versuche, einfügen Anweisung innerhalb PLSQL einfügen und Rückgabe der ID aus Auslöser für Tabelle erzeugt, die Sequenzen aber Ich bekomme unter Fehler Dosis jemand hat eine Ahnung davon?PLSQL einfügen und zurückgeben ID-Formular-Trigger auf Tabelle
ORA-00905: fehlendes Stichwort
ORA-06512: bei "ADMIN.F_INSERT_ORDER_DATA", Zeile 22
ORA-06512: in Zeile 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;
/
Berufung die Funktion, wie unten
declare
result varchar2(1024);
begin
-- Call the function
result := F_INSERT_ORDER_DATA (1000,'----');
end;
-Code-Update
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;
/
Aufruf Funktion
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;
Ich habe meinen Code entsprechend Ihren angegebenen Link zu aktualisieren und jetzt Fehler bei Aufruf der Funktions Teil erhalte ich ... 'ORA-00900: ungültigen SQL statement' und Fehler' ORA-06512: in Zeile 7' bitte, dass professionelle Art und Weise ist neu für mich, wenn Sie nicht einen Blick .thanks nehmen nichts dagegen meine aktualisiert Post – sam
Überprüfen Sie, wie Sie Ihre Funktion in einem plsql Block – XING
vielen dank für Brillianten mit professionellen Fähigkeiten unterstützen nennen kann ... ich schätze Ihre Freundlichkeit Unterstützung wirklich : – sam