Tại sao bạn lại chuyển toàn bộ các tham số khi tất cả những gì bạn cần là ID người cắm trại (và bạn không cần làm gì với phần còn lại của chúng)? Điều đó không có ý nghĩa ...
Đây là một tùy chọn cho biết cách thực hiện.
Bảng mẫu:
SQL> select * from charges;
CAMPERID CATEGORY CHARGEDATE AMT
---------- ---------- ------------------- ----------
1 Category 1 12.10.2021 00:00:00 500
SQL>
Thủ tục:
SQL> create or replace procedure p_test
2 (par_camperid in charges.camperid%type,
3 par_message out varchar2
4 )
5 as
6 l_camperid charges.camperid%type;
7 begin
8 select c.camperid
9 into l_camperid
10 from charges c
11 where c.camperid = par_camperid;
12
13 par_message := 'Camper ' || par_camperid || ' exists';
14 exception
15 when no_data_found then
16 par_message := 'Error: no such camper ID (' || par_camperid || ')';
17 end;
18 /
Procedure created.
Thử nghiệm:
SQL> set serveroutput on;
SQL> declare
2 l_msg varchar2(100);
3 begin
4 p_test(1, l_msg);
5 dbms_output.put_line(l_msg);
6 end;
7 /
Camper 1 exists
PL/SQL procedure successfully completed.
SQL> declare
2 l_msg varchar2(100);
3 begin
4 p_test(2, l_msg);
5 dbms_output.put_line(l_msg);
6 end;
7 /
Error: no such camper ID (2)
PL/SQL procedure successfully completed.
SQL>
Mã bạn đã viết:
- lỗi chính tả, lỗi chính tả, lỗi chính tả ... có phải không
p_error
hoặcp_erorr
? -
if
nên cóend if
-
if
không thể chứaselect
câu lệnh (bạn phải chọn giá trị riêng, sau đó sử dụng nó trongif
) -
where
điều kiện là sai. Đừng bao giờ đặt tên các tham số giống như tên cột. Đây:where camperid = camperid
bằngwhere 1 = 1
và bạn sẽ nhận được tất cả các hàng từ bảng, không chỉ hàng mà bạn đang tìm kiếm