Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Prosedur Tersimpan di Oracle memberikan kesalahan PLS-00428

Saat Anda menjalankan SQL secara langsung menggunakan klien (SQL Plus atau SQL Developer atau Toad) , data dikembalikan ke klien. Saat Anda menjalankan kueri yang sama di dalam PL/SQL, Anda perlu memberi tahu Oracle apa yang harus dilakukan dengan data itu. Biasanya program menyimpan output dalam variabel Pl/SQL untuk diproses lebih lanjut.

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

Jadi, dalam kasus Anda, Anda mungkin memerlukan sesuatu seperti ini..

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;

Setelah Anda mengkompilasi tanpa kesalahan, Anda dapat menjalankan prosedurnya..

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. PL / SQL untuk mencari string di seluruh database

  2. Cara Menginstal Oracle di Mac

  3. Bagaimana cara membagi data yang ditanyakan dengan pembatas di Oracle?

  4. PLSQL JDBC:Bagaimana cara mendapatkan ID baris terakhir?

  5. Bagaimana cara menampilkan nilai default ketika tidak ada kecocokan yang ditemukan dalam kueri?