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

nomor atau jenis argumen yang salah dalam panggilan ke prosedur saya

Jika Anda tidak memerlukan argumen kedua dan ketiga, Anda dapat mendeklarasikannya sebagai variabel dalam prosedur alih-alih argumen, sebagai berikut:

CREATE OR REPLACE PROCEDURE DDPAY_SP(DONOR_ID IN  DD_DONOR.IDDONOR%TYPE,
                                     RET      OUT BOOLEAN)
IS
  nPayment_count  NUMBER;
BEGIN 
  SELECT COUNT(*)
    INTO nPayment_count  
    FROM DD_PLEDGE p
    WHERE p.IDDONOR = DONOR_ID AND
          p.IDSTATUS = 10 AND
          p.PAYMONTHS > 0;

  IF nPayment_count > 0 THEN
    RET := TRUE;
  END IF;
EXCEPTION
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('DD_PAY - exception: ' || SQLCODE || ' : ' || SQLERRM);
    RAISE;
END DDPAY_SP;

Saya telah menyertakan contoh penangan PENGECUALIAN di akhir DD_PAY. Itu selalu merupakan ide yang baik untuk menyertakan setidaknya penangan minimal ini sehingga jika terjadi pengecualian, Anda akan mendapatkan beberapa indikasi di mana letak masalahnya.

Karena prosedur ini mengembalikan nilai BOOLEAN, dan BOOLEAN tidak dapat (sepengetahuan saya) digunakan dari SQL*Plus, Anda harus memanggilnya dari blok PL/SQL, sebagai berikut:

DECLARE
  bRetval  BOOLEAN;
BEGIN
  DD_PAY(308, bRetval);
  DBMS_OUTPUT.PUT_LINE('Returned value is ' ||
                       CASE bRetval
                         WHEN TRUE THEN 'TRUE'
                         ELSE 'FALSE'
                       END);
END;

Cobalah.

EDIT:prosedur penulisan ulang berdasarkan informasi lebih lanjut dari komentar selanjutnya.

Bagikan dan nikmati.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memanggil fungsi pribadi di dalam badan paket

  2. File konfigurasi untuk menyimpan parameter string koneksi di Java

  3. Gabung ke kolom string yang dipisah di Oracle

  4. Oracle SQL - Cara Mengambil 5 nilai tertinggi dari sebuah kolom

  5. Perintah Cadangan RMAN