plsql子查询查出多行怎么修改

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了plsql子查询查出多行怎么修改相关的知识,希望对你有一定的参考价值。

参考技术A PL/SQL查询出来的数据要想修改,那就是用:
--可更新的游标:
--for update 说明是为了更新才使用的这个游标
--current of c 是更新当前这条记录,当前游标指向哪条记录上,就更新哪一条

declare
cursor c
is
select * from emp for update;
begin
for v_temp in c loop
if(v_temp.sal < 2000) then
update emp set sal = sal*2 where current of c;
elsif(v_temp.sal = 5000) then
delete from emp where current of c;
end if;
end loop;
commit;
end;

上面程序,如果sal<2000,那么更新emp表的sal字段为sal*2,
如果sal=5000,那么删除这条记录.本回答被提问者和网友采纳

PLSQL:如果变量 IN 子查询

【中文标题】PLSQL:如果变量 IN 子查询【英文标题】:PLSQL : If variable IN subquery 【发布时间】:2014-01-17 17:53:21 【问题描述】:

在 PL/SQL 函数中是否有可能

IF xVar IN (SELECT yVar
            FROM....)
THEN...

这个? 谢谢

【问题讨论】:

在这里查看几种方法:***.com/questions/13217600/… 【参考方案1】:

不,你可能不得不这样做

select count(*) 
into foo 
from blah
where yVar = xVar

if foo > 0 then ...

如果这是你经常使用的东西,你可以创建一个返回布尔值的函数

【讨论】:

【参考方案2】:

您可以将 FOR-IN 与隐式光标一起使用。我只知道带有 IF 表达式的 IF-THEN-ELSE 运算符。

【讨论】:

以上是关于plsql子查询查出多行怎么修改的主要内容,如果未能解决你的问题,请参考以下文章

sql根据子节点查出所有的父节点的

收到“单行子查询返回多行”错误

SQLserver 怎么把查出的字符串结果作为子查询条件

需要单个输出行上多行的数据。子查询?

Oracle sql使用子查询将多行结果分组为一行

零基础带你学习MySQL—单行子查询和多行子查询(二十二)