=================动态sql into 数组=================

j9dai 2010-05-17 05:38:42
需求:将符合条件的表数据放进数组

1.现已可将表数据放进数组
declare
type v_table is table of t_user%rowtype index by binary_integer;
my_table v_table;
begin
select * bulk collect into my_table from t_user;
for i in 1..my_table.count/10 --my_table.count/10取到的值为四舍五入值
loop
dbms_output.put_line('suser--'||my_table(i).suser);
dbms_output.put_line('name---'||my_table(i).name);
dbms_output.put_line('sex----'||my_table(i).sex);
end loop;
end;

2.现要求sql语句用动态sql,因为表名和条件都不确定,除了用动态游标一条条塞进去,怎么写?
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
j9dai 2010-05-17
  • 打赏
  • 举报
回复
不是用pb开发,纯pl/sql的,因为要重复用到这一批记录,考虑到效率,所以根据条件select一次,放到数组,以后重复运用。
iqlife 2010-05-17
  • 打赏
  • 举报
回复
pb开发的话,一般是在前端就构造好SQL语句,然后传给ORACLE执行就好了啊,很少在PL/SQL里构造的,不明白你的需求
iqlife 2010-05-17
  • 打赏
  • 举报
回复
--看不太明白,动态语句先构造SQL语句
--用EXECUTE IMMEDIATE SQL语句 然后执行
DECLARE
V_SQL VARCHAR2(200);--其中v_sql是动态游标拼接的结果集
BEGIN
--动态sql赋值,用:v_talbe,v_:name来申明该变量从外部获得
V_SQL='SELECT * FROM :v_table where name=:v_name.... '
--动态测试,y游标cur_result返回结果,用using关键词传递参数
OPEN cur_result FOR v_sql using ....;
RETURN cur_result;

END
小灰狼W 2010-05-17
  • 打赏
  • 举报
回复
DECLARE
TYPE v_table IS TABLE OF t_user%rowtype INDEX BY binary_integer;
my_table v_table;
BEGIN
EXECUTE IMMEDIATE 'SELECT * FROM '||'t_user' BULK COLLECT INTO my_table;
for i in 1..my_table.count/10 --my_table.count/10取到的值为四舍五入值
loop
dbms_output.put_line('suser--'||my_table(i).suser);
dbms_output.put_line('name---'||my_table(i).name);
dbms_output.put_line('sex----'||my_table(i).sex);
END loop;
end;
j9dai 2010-05-17
  • 打赏
  • 举报
回复
求助啊,急...

17,088

社区成员

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

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