Di PL/SQL Anda bisa menulis INSERT
pernyataan secara langsung.
DECLARE
tablevalue varchar2(200);
BEGIN
tablevalue := 'Hello World!';
INSERT INTO tablename
VALUES (tablevalue);
END;
Pernyataan Anda gagal karena itu bukan cara DBMS_SQL.EXECUTE
bekerja. Lihat dokumentasi dan contohnya:http:// /docs.Oracle.com/cd/B28359_01/appdev.111/b28419/d_sql.htm#BABBFFFJ
Menurut contoh yang diberikan dalam dokumentasi referensi Anda harus melakukannya seperti ini (pertama Anda menyiapkan pernyataan, lalu mengikat variabel dan kemudian menjalankannya).
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;
Anda menggunakannya kemudian seperti ini
exec demo('something');
Semoga membantu