Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Quy trình được lưu trữ trong Oracle đưa ra lỗi PLS-00428

Khi bạn đang chạy SQL trực tiếp bằng máy khách (SQL Plus hoặc SQL Developer hoặc Toad), dữ liệu được trả lại cho máy khách. Khi bạn chạy cùng một truy vấn bên trong PL / SQL, bạn cần cho oracle biết phải làm gì với dữ liệu đó. Thông thường các chương trình lưu trữ kết quả đầu ra trong các biến Pl / SQL để xử lý thêm.

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

Vì vậy, trong trường hợp của bạn, bạn có thể cần một cái gì đó dọc theo những dòng này ..

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;

Khi bạn biên dịch mà không có lỗi, bạn có thể chạy quy trình ..

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. Pro * c là gì?

  2. Tham gia Diễn đàn Hỏi và Đáp dành cho Nhà phát triển

  3. Cách sử dụng Oracle PLSQL Tables (Mảng liên kết hoặc bảng chỉ mục)

  4. cập nhật nhiều bản ghi trong nhiều bảng lồng nhau trong oracle

  5. Chuyển đổi cột thành hàng trong Oracle