Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

संग्रहित प्रक्रिया-एसक्यूएल डेवलपर

आप पैरामीटर के पूरे समूह को क्यों पास करेंगे जब आपको केवल एक कैंपर आईडी की आवश्यकता होगी (और ऐसा कुछ भी नहीं है जो आप बाकी के साथ करेंगे)? इसका कोई मतलब नहीं है...

यहां एक विकल्प दिया गया है जो दिखाता है कि इसे कैसे करना है।

नमूना तालिका:

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 और आपको तालिका से सभी पंक्तियाँ मिलेंगी, न कि केवल वही जो आप खोज रहे हैं


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओरेकल में मिलीसेकंड के साथ स्ट्रिंग टू डेट

  2. लंबे समय से चल रहे डेटाबेस ऑपरेशन को कैसे रद्द करें?

  3. Oracle PL/SQL ऑब्जेक्ट सुपर विधि को कैसे कॉल करें?

  4. किसी अन्य कॉलम के मान के आधार पर सेल में LISTAGG मान प्रदर्शित करना

  5. SQLPlus - PL/SQL ब्लॉक से कई फाइलों में स्पूलिंग