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

Bagaimana cara mendeklarasikan variabel dan menggunakannya dalam skrip Oracle SQL yang sama?

Ada beberapa cara untuk mendeklarasikan variabel dalam skrip SQL*Plus.

Yang pertama adalah menggunakan VAR, untuk mendeklarasikan variabel bind. Mekanisme untuk menetapkan nilai ke VAR adalah dengan panggilan EXEC:

SQL> var name varchar2(20)
SQL> exec :name := 'SALES'

PL/SQL procedure successfully completed.

SQL> select * from dept
  2  where dname = :name
  3  /

    DEPTNO DNAME          LOC
---------- -------------- -------------
        30 SALES          CHICAGO

SQL>

VAR sangat berguna saat kita ingin memanggil prosedur tersimpan yang memiliki parameter atau fungsi OUT.

Atau kita dapat menggunakan variabel substitusi. Ini bagus untuk mode interaktif:

SQL> accept p_dno prompt "Please enter Department number: " default 10
Please enter Department number: 20
SQL> select ename, sal
  2  from emp
  3  where deptno = &p_dno
  4  /
old   3: where deptno = &p_dno
new   3: where deptno = 20

ENAME             SAL
---------- ----------
CLARKE            800
ROBERTSON        2975
RIGBY            3000
KULASH           1100
GASPAROTTO       3000

SQL>

Saat kita menulis skrip yang memanggil skrip lain, akan berguna untuk MENDEFINISIKAN variabel di awal. Cuplikan ini berjalan tanpa meminta saya memasukkan nilai:

SQL> def p_dno = 40
SQL> select ename, sal
  2  from emp
  3  where deptno = &p_dno
  4  /
old   3: where deptno = &p_dno
new   3: where deptno = 40

no rows selected

SQL>

Akhirnya ada blok PL/SQL anonim. Seperti yang Anda lihat, kami masih dapat menetapkan nilai ke variabel yang dideklarasikan secara interaktif:

SQL> set serveroutput on size unlimited
SQL> declare
  2      n pls_integer;
  3      l_sal number := 3500;
  4      l_dno number := &dno;
  5  begin
  6      select count(*)
  7      into n
  8      from emp
  9      where sal > l_sal
 10      and deptno = l_dno;
 11      dbms_output.put_line('top earners = '||to_char(n));
 12  end;
 13  /
Enter value for dno: 10
old   4:     l_dno number := &dno;
new   4:     l_dno number := 10;
top earners = 1

PL/SQL procedure successfully completed.

SQL>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat masuk ke database sebagai SYS dengan Oracle SQL Developer

  2. Menangani zona waktu di aplikasi web

  3. Bagaimana cara MEMPERBARUI satu kolom menggunakan kolom lain di tabel lain? Kesalahan SQL:ORA-00933:Perintah SQL tidak berakhir dengan benar

  4. menggabungkan pembaruan oracle tidak bisa mendapatkan set baris yang stabil

  5. Apakah pernyataan CASE dan DECODE setara?