PL/SQL में आप INSERT
लिख सकते हैं सीधे बयान।
DECLARE
tablevalue varchar2(200);
BEGIN
tablevalue := 'Hello World!';
INSERT INTO tablename
VALUES (tablevalue);
END;
आपका कथन विफल हो जाता है क्योंकि वह तरीका नहीं है DBMS_SQL.EXECUTE
काम करता है। दस्तावेज़ीकरण और उदाहरण देखें:http:/ /docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sql.htm#BABBFFFJ
रेफरेंस डॉक्यूमेंटेशन में दिए गए उदाहरण के अनुसार आपको इसे इस तरह करना चाहिए (पहले आप स्टेटमेंट तैयार करें, फिर वेरिएबल को बाइंड करें और फिर रन करें)।
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;
आप इसे तब इस तरह इस्तेमाल करें
exec demo('something');
आशा है कि यह मदद करता है