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

Prosedur Tersimpan-Pengembang SQL

Mengapa Anda melewati sejumlah besar parameter ketika yang Anda butuhkan hanyalah ID kemping (dan tidak ada yang akan Anda lakukan dengan yang lainnya)? Itu tidak masuk akal ...

Berikut adalah opsi yang menunjukkan cara melakukannya.

Tabel contoh:

SQL> select * from charges;

  CAMPERID CATEGORY   CHARGEDATE                 AMT
---------- ---------- ------------------- ----------
         1 Category 1 12.10.2021 00:00:00        500

SQL>

Prosedur:

SQL> create or replace procedure p_test
  2    (par_camperid   in charges.camperid%type,
  3     par_message   out varchar2
  4    )
  5  as
  6    l_camperid   charges.camperid%type;
  7  begin
  8    select c.camperid
  9      into l_camperid
 10      from charges c
 11      where c.camperid = par_camperid;
 12
 13    par_message := 'Camper ' || par_camperid || ' exists';
 14  exception
 15    when no_data_found then
 16      par_message := 'Error: no such camper ID (' || par_camperid || ')';
 17  end;
 18  /

Procedure created.

Pengujian:

SQL> set serveroutput on;
SQL> declare
  2    l_msg varchar2(100);
  3  begin
  4    p_test(1, l_msg);
  5    dbms_output.put_line(l_msg);
  6  end;
  7  /
Camper 1 exists

PL/SQL procedure successfully completed.

SQL> declare
  2    l_msg varchar2(100);
  3  begin
  4    p_test(2, l_msg);
  5    dbms_output.put_line(l_msg);
  6  end;
  7  /
Error: no such camper ID (2)

PL/SQL procedure successfully completed.

SQL>

Kode yang Anda tulis:

  • salah ketik, salah ketik, salah ketik ... apakah itu p_error atau p_erorr ?
  • if harus memiliki end if
  • if tidak boleh berisi select pernyataan (Anda harus memilih nilai secara terpisah, dan kemudian menggunakannya di if )
  • where kondisinya salah. Jangan pernah memberi nama parameter yang sama dengan nama kolom. Ini:where camperid = camperid sama dengan where 1 = 1 dan Anda akan mendapatkan semua baris dari tabel, bukan hanya yang Anda cari


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. distribusi pembayaran sql

  2. Tambahkan atribut ke xmltype dengan nilai yang diambil dari urutan

  3. Transaksi otonom di Sybase ASE 15.5

  4. Bagaimana cara memperbaiki subquery baris tunggal Ora-01427 mengembalikan lebih dari satu baris dalam pilihan?

  5. Oracle menghapus duplikat berdasarkan suatu kondisi