请教各位!急!很菜的问题

goodhy 2004-12-03 09:44:07
我在PL程序块中给一个varchar2类型的变量赋值,内容是打开一个游标,请问怎么样让oracle去执行这个varchar2变量中的语句。
或者还有什么办法可以在存储过程里执行一个变量中的sql语句,或者ddl语句,等等

create or replace procedure DotNetPagination()
is
type t_cursor is ref cursor;
v_cur t_cursor;
Cstr varchar2(1000);
begin
Cstr := 'OPEN v_cur FOR select * from cd_dwdm';

execute immediate Cstr; --这句话出错。

end;
...全文
133 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodhy 2004-12-06
  • 打赏
  • 举报
回复
ok,liuyi8903(juventus) 说的正确的
goodhy 2004-12-06
  • 打赏
  • 举报
回复
我时时
phant0m 2004-12-06
  • 打赏
  • 举报
回复
'OPEN v_cur FOR select * from cd_dwdm'这是sql的语法吧,oracle用is不用for
liuyi8903 2004-12-05
  • 打赏
  • 举报
回复
不好意思,多了对括号^_^
create or replace procedure DotNetPagination
is
type t_cursor is ref cursor;
v_cur t_cursor;
Cstr varchar2(1000);
begin
Cstr := ' select * from cd_dwdm';

execute immediate Cstr;
OPEN v_cur For cstr;

end DotNetPagination;
liuyi8903 2004-12-05
  • 打赏
  • 举报
回复
create or replace procedure DotNetPagination()
is
type t_cursor is ref cursor;
v_cur t_cursor;
Cstr varchar2(1000);
begin
Cstr := ' select * from cd_dwdm';

execute immediate Cstr;
OPEN v_cur For cstr;

end DotNetPagination;
liuyi8903 2004-12-05
  • 打赏
  • 举报
回复
create or replace procedure DotNetPagination()
is
type t_cursor is ref cursor;
v_cur t_cursor;
Cstr varchar2(1000);
begin
Cstr := ' select * from cd_dwdm';

execute immediate Cstr;
OPEN v_cur For cstr;
.
.
.

end;
juren250 2004-12-05
  • 打赏
  • 举报
回复
create or replace procedure DotNetPagination()
is
type t_cursor is ref cursor;
v_cur t_cursor;
Cstr varchar2(1000);
begin
open v_cur for 'select * from cd_dwdm';
然后你可以对游标v_cur操作了
end;
goodhy 2004-12-03
  • 打赏
  • 举报
回复
to: qiaozhiwei(乔)
试了一下,不行
zhaokeke2004 2004-12-03
  • 打赏
  • 举报
回复
执行DDL:
create or replace procedure dsql1
is
begin
execute immediate 'create table test(name char(2))';
dbms_output.put_line('successful !');
exception
when others then
dbms_output.put_line('error !!!');
end;
qiaozhiwei 2004-12-03
  • 打赏
  • 举报
回复
试试这样行不行:
create or replace procedure DotNetPagination()
is

type t_cursor is ref cursor;
v_cur t_cursor;
Cstr varchar2(1000);
begin
Cstr := 'select * from cd_dwdm';
OPEN v_cur FOR Cstr ;

end;
将 type t_cursor is ref cursor; 放在包头里,或是个全局变量

17,086

社区成员

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

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