怎样把一个数组参数赋给存储过程?

lllygang 2005-03-16 11:29:29
create or replace procedure test( aaa in varchar2,bbb out number) is
begin
select count(*) into bbb from table where id in (aaa);
end;

这里aaa的值为:'20050204001','20050204002','20050204003'…………
或者有没有别的好办法实现这种功能?
但是不要是根据数组的值在存储过程外部循环调用,因为是BS的程序,那样执行可能效率不好
...全文
178 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
i1kyou 2005-03-18
  • 打赏
  • 举报
回复
create or replace procedure Test(idList in VARCHAR2,
Res out Number) as
str_sql Varchar2(1000);
begin
str_sql:='select Count(*) into Res from table where id in ('||IdListi||')';
execute immediate str_sql;
……………………
/* idlist 为外部组合后的Id列表,格式如 '','','','',''………… */
end;
lllygang 2005-03-18
  • 打赏
  • 举报
回复
动态SQL如何实现?
lllygang 2005-03-18
  • 打赏
  • 举报
回复
那么要在内部把字符串先拆分再循环?
luxuezhu 2005-03-17
  • 打赏
  • 举报
回复
不想在存储过程外部循环调用
那么在过程内部循环可以不?
用游标实现内部动态SQL
lllygang 2005-03-17
  • 打赏
  • 举报
回复
就是选中了多少个Id是不确定的,怎么把这些参数一次传进存储过程?
lllygang 2005-03-16
  • 打赏
  • 举报
回复
或者有人知道调用动态SQL Update、insert后能回滚吗?
lllygang 2005-03-16
  • 打赏
  • 举报
回复
如果数组位数不确定呢?
其实我就是要改变选中的记录,update ××(略) where id in (数组)
怎么把这些Id一起传进去?
lcg412 2005-03-16
  • 打赏
  • 举报
回复
不知道你要達到的是個什麼目的,
根據你的描述,建議用package來試試
在package中定義一個數組變量 type taaa is table of varchar2

create or replace procedure test ( aaa in taaa:=taaa(),bbb out number)
is
begin
null;
end;

沒有編譯過,版主試試吧

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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