Về cách đối phó với loại vấn đề cú pháp này khi mới bắt đầu, tôi khuyên bạn nên thực hành đơn giản hóa nó xuống ví dụ nhỏ nhất có thể, để bạn không bị phân tâm bởi logic nối.
Ví dụ:bạn có thể nhanh chóng kiểm tra điều này và thấy rằng nó sẽ không hoạt động :
declare
rc sys_refcursor;
begin
open rc for
case
when 1 = 1 then select * from dual -- not valid
end;
end;
không thành công với
ORA-06550: line 6, column 29:
PLS-00103: Encountered the symbol "SELECT" when expecting one of the following: ...
bởi vì open rc for select
cú pháp phải là một câu lệnh duy nhất và không thể tách rời bằng logic có điều kiện.
Lưu ý rằng không có create function
, tham số hoặc kết hợp, v.v. để làm phức tạp mọi thứ. Bạn có thể thêm lại tất cả những cái đó sau khi đã nắm rõ cú pháp. case
cú pháp câu lệnh là tại đây
. (Lưu ý rằng có một vài loại case
khác nhau .) Nó cần phải là một trong hai
declare
rc sys_refcursor;
begin
case
when 1 = 1 then
open rc for select * from dual;
end case;
end;
hoặc tương đương bằng cách sử dụng if
:
declare
rc sys_refcursor;
begin
if 1 = 1 then
open rc for select * from dual;
end if;
end;