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

Chuyển thủ tục Oracle sang PostgreSQL

Tôi không nghĩ rằng Postgres hỗ trợ cấu trúc cập nhật đó (bài kiểm tra đơn giản mà tôi đã thử không thành công với cùng một lỗi). Bạn có thể phải làm điều gì đó như sau:

CREATE OR REPLACE FUNCTION DATA_UPDATE
  (mission NUMERIC,
   task NUMERIC)
   RETURNS void as '
DECLARE
   offScheduled int4;
   totalReceivers int4; 
BEGIN
IF mission IS NOT NULL THEN
  select COALESCE(SUM(RR.TRQ_FUEL_OFFLOAD),0),
  COALESCE(SUM(RR.TRQ_NUMBER_RECEIVERS),0) into offScheduled, totalReceivers 
  FROM REFUELING_REQUEST RR, MISSION_REQUEST_PAIRING MRP
             WHERE MO.MSN_INT_ID = MRP.MSN_INT_ID
               AND MO.MO_INT_ID = MRP.MO_INT_ID
               AND MRP.REQ_INT_ID = RR.REQ_INT_ID;

 UPDATE MISSION_OBJECTIVE MO
     SET MO.MO_TKR_TOTAL_OFF_SCHEDULED = offScheduled,
          MO.MO_TKR_TOTAL_RECEIVERS = totalReceivers 
     WHERE MO.MSN_INT_ID = mission
     AND MO.MO_INT_ID = task ;
END IF;
END;
' LANGUAGE plpgsql;

... giả sử tôi không hiểu logic quá tệ;)

Tôi đã tự ý thay đổi cách xác định các tham số và kiểu trả về (vì có vẻ như bạn không thực sự trả về bất kỳ thứ gì từ hàm?)

Chỉnh sửa:rất tiếc, tôi đã sử dụng sai cấu trúc cho select into ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres tách chuỗi với dấu ngoặc kép thành nhiều hàng?

  2. Làm thế nào để chọn nhiều hơn 1 bản ghi mỗi ngày?

  3. Docker Compose, Django:role _ không tồn tại

  4. Scala &Chơi! &Slick &PostgreSQL tự động tăng

  5. PGAdmin hiển thị quá nhiều cơ sở dữ liệu từ Heroku