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

Bagaimana cara mendeklarasikan dan menggunakan variabel dalam PL/SQL seperti yang saya lakukan di T-SQL?

Jawaban yang Direvisi

Jika Anda tidak memanggil kode ini dari program lain, opsinya adalah melewati PL/SQL dan melakukannya secara ketat di SQL menggunakan variabel bind:

var myname varchar2(20);

exec :myname := 'Tom';

SELECT *
FROM   Customers
WHERE  Name = :myname;

Di banyak alat (seperti Toad dan SQL Developer), menghilangkan var dan exec pernyataan akan menyebabkan program meminta Anda untuk memasukkan nilainya.

Jawaban Asli

Perbedaan besar antara T-SQL dan PL/SQL adalah Oracle tidak mengizinkan Anda mengembalikan hasil kueri secara implisit. Hasilnya selalu harus dikembalikan secara eksplisit dengan cara tertentu. Cara paling sederhana adalah dengan menggunakan DBMS_OUTPUT (kira-kira setara dengan print ) untuk menampilkan variabel:

DECLARE
   myname varchar2(20);
BEGIN
     myname := 'Tom';

     dbms_output.print_line(myname);
END;

Namun, ini tidak terlalu membantu jika Anda mencoba mengembalikan kumpulan hasil. Dalam hal ini, Anda ingin mengembalikan koleksi atau refkursor. Namun, menggunakan salah satu dari solusi tersebut akan memerlukan pembungkusan kode Anda dalam suatu fungsi atau prosedur dan menjalankan fungsi/prosedur dari sesuatu yang mampu memakan hasil. Fungsi yang bekerja dengan cara ini mungkin terlihat seperti ini:

CREATE FUNCTION my_function (myname in varchar2)
     my_refcursor out sys_refcursor
BEGIN
     open my_refcursor for
     SELECT *
     FROM   Customers
     WHERE  Name = myname;

     return my_refcursor;
END my_function;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana mengonversi stempel waktu dengan milidetik hingga saat ini di Oracle

  2. ANTARA klausa versus <=DAN>=

  3. ORA-00984:kolom tidak diizinkan di sini

  4. PLS-00201 pengenal 'PACKAGENAME.PROCEDURENAME' harus dideklarasikan

  5. Kebingungan dengan Oracle CONNECT BY