Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

nếu (chọn số (cột) từ bảng)> 0 thì

Bạn không thể sử dụng trực tiếp câu lệnh SQL trong biểu thức PL / 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:
...
...

Bạn phải sử dụng một biến để thay thế:

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.

Tất nhiên, bạn có thể thực hiện toàn bộ công việc trong SQL:

update my_table
set x = y
where (select count(*) from other_table) >= 1;

Rất khó để chứng minh rằng điều gì đó là không thể. Ngoài trường hợp kiểm tra đơn giản ở trên, bạn có thể xem sơ đồ cú pháp cho IF tuyên bố; bạn sẽ không thấy SELECT trong bất kỳ nhánh nào.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để thoát dấu phẩy và dấu ngoặc kép cùng một lúc cho tệp CSV?

  2. Hàm LTRIM () trong Oracle

  3. LOOP SQL động

  4. UID - Trả lại ID của Phiên hiện tại trong Oracle

  5. Làm cách nào để thay thế các giá trị cụ thể trong cột cơ sở dữ liệu oracle?