Hvorfor ville du videregive hele bunken af parametre, når alt hvad du behøver er et autocamper-id (og der ikke er noget du ville gøre med resten af dem)? Det giver bare ikke mening ...
Her er en mulighed, der viser, hvordan du gør det.
Eksempeltabel:
SQL> select * from charges;
CAMPERID CATEGORY CHARGEDATE AMT
---------- ---------- ------------------- ----------
1 Category 1 12.10.2021 00:00:00 500
SQL>
Fremgangsmåde:
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.
Test:
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 du skrev:
- tastfejl, stavefejl, stavefejl ... er det
p_error
ellerp_erorr
? if
skal haveend if
if
kan ikke indeholde enselect
sætning (du skal vælge værdi separat og derefter bruge den iif
)where
tilstanden er forkert. Navngiv aldrig parametre det samme som kolonnenavne. Dette:where camperid = camperid
er lig medwhere 1 = 1
og du får alle rækker fra tabellen, ikke kun den, du leder efter