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

Oracle में संग्रहीत प्रक्रिया PLS-00428 त्रुटि दे रही है

जब आप क्लाइंट (एसक्यूएल प्लस या एसक्यूएल डेवलपर या टॉड) का उपयोग करके सीधे एसक्यूएल चला रहे हैं, तो डेटा क्लाइंट को वापस कर दिया जाता है। जब आप पीएल/एसक्यूएल के अंदर एक ही क्वेरी चलाते हैं, तो आपको ऑरैकल को यह बताना होगा कि उस डेटा के साथ क्या करना है। आमतौर पर प्रोग्राम आगे की प्रक्रिया के लिए आउटपुट को Pl/SQL वेरिएबल में स्टोर करते हैं।

https://docs.oracle.com/cd/B19306_01 /appdev.102/b14261/selectinto_statement.htm

तो, आपके मामले में, आपको इन पंक्तियों के साथ कुछ चाहिए..

CREATE OR REPLACE PROCEDURE SPBILL (SPCLIENT_ID VARCHAR2) 
AS
  l_client_name clients.client_name%type;
  l_room_id rooms.room_id%type;
  ...
  l_invoice number(5,2);
BEGIN
   SELECT C.CLIENT_NAME, B.ROOM_ID, R.ROOM_COST, T.TREAT_NAME, T.TREAT_COST, (ROOM_COST*(B_END_DATE-B_START_DATE)+TREAT_COST)
   into l_client_name, l_room_id...l_invoice
   FROM CLIENTS C, ROOMS R, TREATMENTS T, BOOKING B, PRESCRIPTION P
   WHERE C.CLIENT_ID=B.CLIENT_ID
   AND R.ROOM_ID=B.ROOM_ID
   AND B.CLIENT_ID=P.CLIENT_ID
   AND P.TREAT_ID=T.TREAT_ID
   AND C.CLIENT_ID=SPCLIENT_ID;

   --further processing here based on variables above.
   dbms_output.put_line(l_invoice);
END SPBILL;

एक बार जब आप बिना किसी त्रुटि के संकलन कर लेते हैं, तो आप प्रक्रिया को चला सकते हैं..

set serveroutput on; 
SPBILL(100); 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL:'नो मैचिंग यूनिक या प्राइमरी की' एरर प्राप्त करना और पता नहीं क्यों?

  2. Oracle REGEXP_REPLACE अपरकेस प्रतिस्थापन स्ट्रिंग

  3. Oracle में इस पथ को उल्टा करें z/y/x से x/y/z . तक

  4. टेबल एफके संबंधों के आधार पर पीएल/एसक्यूएल में डिलीट स्टेटमेंट कैसे उत्पन्न करें?

  5. एक ट्रिगर बनाना