使用EXECUTE IMMEDIATE语句执行动态SQL的问题:

gethostbyname 2003-02-24 11:44:57
想使用:
BEGIN
EXECUTE IMMEDIATE ' CREATE TABLE TEST'
||'(AA NUMBER(10),BB NUMBER(10))';
END;
/
结果报错:
ERROR at line 2:
ORA-06550: line 2, column 10:
PLS-00103: Encountered the symbol "IMMEDIATE" when expecting one of the following:
:= . ( @ % ;
The symbol ":= was inserted before "IMMEDIATE" to continue.
我用的是805版本,是不是不支持这样的本机动态SQL操作?谢谢!
...全文
387 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gethostbyname 2003-02-24
  • 打赏
  • 举报
回复
多谢,可我就是不想用DBMS_SQL包的,呵呵看来没办法了。
bzszp 2003-02-24
  • 打赏
  • 举报
回复
在oracle8.0.5以上中:
用dbms_sql来实现
CREATE OR REPLACE PROCEDURE demo(salary IN NUMBER) AS
cursor_name INTEGER;
rows_processed INTEGER;
BEGIN
cursor_name := dbms_sql.open_cursor;
DBMS_SQL.PARSE(cursor_name, 'DELETE FROM emp WHERE sal > :x',
dbms_sql.native);
DBMS_SQL.BIND_VARIABLE(cursor_name, ':x', salary);
rows_processed := dbms_sql.execute(cursor_name);
DBMS_SQL.close_cursor(cursor_name);
EXCEPTION
WHEN OTHERS THEN
DBMS_SQL.CLOSE_CURSOR(cursor_name);
END;
hepp 2003-02-24
  • 打赏
  • 举报
回复
同意。
beckhambobo 2003-02-24
  • 打赏
  • 举报
回复
不行,execute immediate只能用在oracle8i以上版本
你用dbms_sql()包吧

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧