In PL/SQL zou je de INSERT
. kunnen schrijven verklaring direct.
DECLARE
tablevalue varchar2(200);
BEGIN
tablevalue := 'Hello World!';
INSERT INTO tablename
VALUES (tablevalue);
END;
Uw verklaring faalt omdat dat niet de manier is DBMS_SQL.EXECUTE
werken. Bekijk de documentatie en het voorbeeld:http:/ /docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sql.htm#BABBFFFJ
Volgens het voorbeeld in de referentiedocumentatie zou je het als volgt moeten doen (eerst bereid je het statement voor, bind dan de variabele en voer het dan uit).
CREATE OR REPLACE PROCEDURE demo(tablevalue IN varchar2) AS
cursor_name INTEGER;
rows_processed INTEGER;
BEGIN
cursor_name := dbms_sql.open_cursor;
DBMS_SQL.PARSE(cursor_name, 'INSERT INTO tablename VALUES(:x)',
DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(cursor_name, ':x', tablevalue);
rows_processed := DBMS_SQL.EXECUTE(cursor_name);
DBMS_SQL.CLOSE_CURSOR(cursor_name);
EXCEPTION
WHEN OTHERS THEN
DBMS_SQL.CLOSE_CURSOR(cursor_name);
raise;
END;
Je gebruikt het dan als volgt
exec demo('something');
Ik hoop dat het helpt