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

Apa perbedaan antara variabel Bind PLSQL dan variabel Host?

Pertimbangkan cuplikan C#:

. ini
int    v_empno = 7369;
string v_ename;

OracleCommand cmd = con.CreateCommand();
cmd.Parameters.Add("paramEmpno", OracleDbType.Decimal, v_empno, ParameterDirection.Input);
cmd.CommandText = "select e.ename from scott.emp e where e.empno = :1";
v_ename = cmd.ExecuteScalar().ToString();

v_empno dan v_ename adalah variabel tuan rumah. Di sini Anda secara eksplisit membuat variabel bind Anda untuk digunakan sebagai :1 dalam pernyataan Anda.

Pertimbangkan cuplikan PL/SQL ini:

declare
   v_empno  number := 7369;
   v_ename  varchar2(10);
begin
   select e.ename
     into v_ename
     from scott.emp e
    where e.empno = v_empno;
   dbms_output.put_line(v_ename);
end;
/

Sekali lagi variabel yang dideklarasikan v_empno dan v_ename dapat dianggap sebagai variabel host, tetapi ketika digunakan dalam SQL statis dalam kode PL/SQL, variabel tersebut secara otomatis diubah menjadi variabel bind oleh kompiler/mesin PL/SQL - Anda tidak perlu membuat variabel bind secara manual seperti di C# contoh. Jika Anda memeriksa SQL yang sebenarnya dieksekusi oleh PL/SQL ini, akan terlihat seperti ini:

   select e.ename
     from scott.emp e
    where e.empno = :B1

Itu adalah compiler PL/SQL yang secara otomatis telah membuat :B1 ikat variabel untuk v_empno . Anda variabel PL/SQL. Dan itulah maksud Tom Kyte bahwa Anda tidak dapat benar-benar membuat perbedaan yang tepat antara variabel host dan variabel bind di PL/SQL. Saat Anda menulis PL/SQL, variabelnya adalah variabel host saat digunakan dalam kode PL/SQL dan pada saat yang sama menjadi variabel pengikat saat digunakan dalam kode SQL yang disematkan. Anda tidak perlu membuat perbedaan dalam PL/SQL, kompiler akan menanganinya untuk Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara membuat grafik menggunakan PHP dari oracle

  2. Bagaimana cara menyinkronkan dua Oracle Database?

  3. FROM kata kunci tidak ditemukan di tempat yang diharapkan, pemilihan teks Oracle SQL

  4. Oracle meninggalkan kueri bergabung luar

  5. Menggunakan variabel ikat di SQL Plus dengan lebih dari satu baris yang dikembalikan?