存储过程变量赋值问题。。。。求大神指点

u010313503 2014-05-14 09:52:25
我想在一个存储过程中建立一个变量A,
然后在通过"select fid from emp"这个SQL把查出来的FID值赋值给A,
然后接一个"update test set d='0' where fid=A"
这个存储过程该怎么写啊,求大神指点。。。。。。。。。。。。。。。。
...全文
83 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010313503 2014-05-14
  • 打赏
  • 举报
回复
think you!
CT_LXL 2014-05-14
  • 打赏
  • 举报
回复
引用 5 楼 u010313503 的回复:
是不是就是说 假如select 出了fid值为(1,2,3,4)四个值。 通过loop循环 第一次运行到 update test set d='0' where fid=A.fid 中a.fid为:1 第二次运行到 update test set d='0' where fid=A.fid 中a.fid为:2 第三次运行到 update test set d='0' where fid=A.fid 中a.fid为:3 第四次运行到 update test set d='0' where fid=A.fid 中a.fid为:4
right
u010313503 2014-05-14
  • 打赏
  • 举报
回复
是不是就是说 假如select 出了fid值为(1,2,3,4)四个值。 通过loop循环 第一次运行到 update test set d='0' where fid=A.fid 中a.fid为:1 第二次运行到 update test set d='0' where fid=A.fid 中a.fid为:2 第三次运行到 update test set d='0' where fid=A.fid 中a.fid为:3 第四次运行到 update test set d='0' where fid=A.fid 中a.fid为:4
CT_LXL 2014-05-14
  • 打赏
  • 举报
回复
引用 2 楼 u010313503 的回复:
create or replace procedure p_test is begin FOR A IN (select fid from emp) LOOP update test set d='0' where fid=A.fid END LOOP; commit; end; 假如 select fid from emp 返回的是多个ID值, update test set d='0' where fid=A.fid 这句还适用吗?是否要改成update test set d='0' where fid in(A.fid)
适用,因为用了FOR loop循环。循环的执行UPDATE
CT_LXL 2014-05-14
  • 打赏
  • 举报
回复
引用 楼主 u010313503 的回复:
我想在一个存储过程中建立一个变量A, 然后在通过"select fid from emp"这个SQL把查出来的FID值赋值给A, 然后接一个"update test set d='0' where fid=A" 这个存储过程该怎么写啊,求大神指点。。。。。。。。。。。。。。。。
如果你能确保只返回一个值,可以这样赋值: select fid into A from emp; A 要先定义。
u010313503 2014-05-14
  • 打赏
  • 举报
回复
create or replace procedure p_test is begin FOR A IN (select fid from emp) LOOP update test set d='0' where fid=A.fid END LOOP; commit; end; 假如 select fid from emp 返回的是多个ID值, update test set d='0' where fid=A.fid 这句还适用吗?是否要改成update test set d='0' where fid in(A.fid)
CT_LXL 2014-05-14
  • 打赏
  • 举报
回复
引用 楼主 u010313503 的回复:
我想在一个存储过程中建立一个变量A, 然后在通过"select fid from emp"这个SQL把查出来的FID值赋值给A, 然后接一个"update test set d='0' where fid=A" 这个存储过程该怎么写啊,求大神指点。。。。。。。。。。。。。。。。
为了防止查询语句有多条返回值报错,所有选择游标。
create or replace procedure p_test is
begin
  FOR A IN (select fid from emp) LOOP
    update test set d='0' where fid=A.fid
  END LOOP;
  commit;
end;

17,377

社区成员

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

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