我需要检查一个条件。即:
if (condition)> 0 then update table else do not update end if
我需要使用select into将结果存储到变量中吗?
例如:
declare valucount integer begin select count(column) into valuecount from table end if valuecount > o then update table else do not update
是的,你必须使用一个变量。您不能直接在PL / sql表达式中使用sql语句:
sql> begin 2 if (select count(*) from dual) >= 1 then 3 null; 4 end if; 5 end; 6 / if (select count(*) from dual) >= 1 then * ERROR at line 2: ORA-06550: line 2,column 6: pls-00103: Encountered the symbol "SELECT" when expecting one of the following: ... ...
相反,你必须这样做:
sql> set serveroutput on sql> sql> declare 2 v_count number; 3 begin 4 select count(*) into v_count from dual; 5 6 if v_count >= 1 then 7 dbms_output.put_line('Pass'); 8 end if; 9 end; 10 / Pass PL/sql procedure successfully completed.
当然,您可能可以在sql中完成所有事情:
update my_table set x = y where (select count(*) from other_table) >= 1;
很难证明有些事情是不可能的。除了上述简单的测试用例,您可以查看syntax diagram的IF语句;您将不会在任何分支中看到SELECT语句。
原文地址:https://www.jb51.cc/oracle/206111.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。