在PLSQL中执行SQL语句时
DBMS_SQL.EXECUTE('insert into tablename VALUES(aNumber)');
Run Code Online (Sandbox Code Playgroud)
它给出了ASCII字符错误.当直接插入它成功并插入它.
在PL/SQL中,您可以INSERT直接编写语句.
DECLARE
tablevalue varchar2(200);
BEGIN
tablevalue := 'Hello World!';
INSERT INTO tablename
VALUES (tablevalue);
END;
Run Code Online (Sandbox Code Playgroud)
您的陈述失败,因为这不是可行的方式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;
Run Code Online (Sandbox Code Playgroud)
你就这样使用它
exec demo('something');
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你
| 归档时间: |
|
| 查看次数: |
3139 次 |
| 最近记录: |