आप पैरामीटर के पूरे समूह को क्यों पास करेंगे जब आपको केवल एक कैंपर आईडी की आवश्यकता होगी (और ऐसा कुछ भी नहीं है जो आप बाकी के साथ करेंगे)? इसका कोई मतलब नहीं है...
यहां एक विकल्प दिया गया है जो दिखाता है कि इसे कैसे करना है।
नमूना तालिका:
SQL> select * from charges;
CAMPERID CATEGORY CHARGEDATE AMT
---------- ---------- ------------------- ----------
1 Category 1 12.10.2021 00:00:00 500
SQL>
प्रक्रिया:
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.
परीक्षण:
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>
आपके द्वारा लिखा गया कोड:
- टाइपो, टाइपो, टाइपो ... क्या यह
p_error
है याp_erorr
? if
end if
if
select
. नहीं हो सकता कथन (आपको अलग से मूल्य का चयन करना होगा, और फिर इसका उपयोगif
. में करना होगा )where
हालत गलत है। कभी भी, कभी भी पैरामीटर को कॉलम नामों के समान नाम न दें। यह:where camperid = camperid
के बराबर हैwhere 1 = 1
और आपको तालिका से सभी पंक्तियाँ मिलेंगी, न कि केवल वही जो आप खोज रहे हैं