Mengapa Anda melewati sejumlah besar parameter ketika yang Anda butuhkan hanyalah ID kemping (dan tidak ada yang akan Anda lakukan dengan yang lainnya)? Itu tidak masuk akal ...
Berikut adalah opsi yang menunjukkan cara melakukannya.
Tabel contoh:
SQL> select * from charges;
CAMPERID CATEGORY CHARGEDATE AMT
---------- ---------- ------------------- ----------
1 Category 1 12.10.2021 00:00:00 500
SQL>
Prosedur:
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.
Pengujian:
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>
Kode yang Anda tulis:
- salah ketik, salah ketik, salah ketik ... apakah itu
p_error
ataup_erorr
? if
harus memilikiend if
if
tidak boleh berisiselect
pernyataan (Anda harus memilih nilai secara terpisah, dan kemudian menggunakannya diif
)where
kondisinya salah. Jangan pernah memberi nama parameter yang sama dengan nama kolom. Ini:where camperid = camperid
sama denganwhere 1 = 1
dan Anda akan mendapatkan semua baris dari tabel, bukan hanya yang Anda cari