sql >> Database >  >> RDS >> Oracle

Opgeslagen procedure in Oracle geeft fout PLS-00428

Wanneer u de SQL rechtstreeks uitvoert met behulp van een client (SQL Plus of SQL Developer of Toad), worden gegevens teruggestuurd naar de client. Wanneer u dezelfde query uitvoert in PL/SQL, moet u Oracle vertellen wat u met die gegevens moet doen. Gewoonlijk slaan programma's de uitvoer op in Pl/SQL-variabelen voor verdere verwerking.

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

Dus in jouw geval heb je misschien iets in deze trant nodig..

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;

Als je eenmaal zonder fouten hebt gecompileerd, kun je de procedure uitvoeren..

set serveroutput on; 
SPBILL(100); 


  1. Waarom zegt Postgres dat column niet bestaat?

  2. Zoek het verschil tussen tijdstempels in seconden in PostgreSQL met JOOQ

  3. Hoe wijzig ik mijn bestaande tabel om een ​​bereikpartitie in Oracle te maken?

  4. MySQL selecteren string met speciale tekens