oracle – if(select count(column)from table)> 0 then
发布时间:2020-12-12 13:58:47 所属栏目:百科 来源:网络整理
导读:我需要检查一个条件。即: if (condition) 0 then update tableelse do not updateend if 我需要使用select into将结果存储到变量中吗? 例如: declare valucount integerbegin select count(column) into valuecount from tableendif valuecount o then up
我需要检查一个条件。即:
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语句。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |