在存储过程中建立表,Oracle8.05不能用excute immediate?怎么办?

frogshero 2004-07-02 11:51:04
谢谢
...全文
89 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiezhi 2004-07-02
  • 打赏
  • 举报
回复
oracle8i就可以了。
用DBMS_SQL包是低版本oracle的选择,而且也是保留兼容性的一个选择。
freddy2003 2004-07-02
  • 打赏
  • 举报
回复
Oracle8.05不能用excute immediate,Oracle9才可以
你可以改为存储过程

CREATE OR REPLACE PROCEDURE Test1 IS
v_Sql VARCHAR2(200);
Cursor_create VARCHAR2(100);
Result NUMBER;
BEGIN
v_Sql := '
CREATE TABLE T1
(
A VARCHAR2(200)
)
';

cursor_create := dbms_sql.open_cursor;
DBMS_SQL.PARSE(cursor_create, v_SQL,dbms_sql.native);
Result := dbms_sql.EXECUTE(cursor_create);
DBMS_SQL.close_cursor(cursor_create);

END Test1;
dinya2003 2004-07-02
  • 打赏
  • 举报
回复
首先你没有权限,要求DBA给你授予建表的权限.参考:
create or replace function test return varchar2 as
v_cursor number;
v_string varchar2(200);
v_row number;
begin
v_cursor:=dbms_sql.open_cursor;
v_string:='create table testdb (text varchar2(200))';
dbms_sql.parse(v_cursor,v_string,dbms_sql.native);
v_row:=dbms_sql.execute(v_cursor);
dbms_sql.close_cursor(v_cursor);
return ('成功执行'||v_row||'行!');
exception
when others then
dbms_sql.close_cursor(v_cursor);
return ('执行失败!'||sqlcode||sqlerrm);
raise;
end;
frogshero 2004-07-02
  • 打赏
  • 举报
回复
执行存储过程时提示:
insufficient privileges.

请再看看吧???
LGQDUCKY 2004-07-02
  • 打赏
  • 举报
回复
8i以前的版本只能使用 DBMS_SQL来执行
declare
nSQL NUMBER;
begin
nSQL := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE( nSQL, ‘update .....’, DBMS_SQL.v7 ) ;
DBMS_SQL.CLOSE_CURSOR( nSQL);
end;


这样就是多几部,效果是一样的。
1、不安装Oracle客户连接Oracle 8的方法请将以下文件拷贝到运行文件所在目录 一、ODBC动态库 :ctl3d32.dll msvcrt40.dll odbc16gt.dll odbc32.dll odbc32gt.dll odbccp32.dll odbccr32.dll odbcint.dll

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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