Có một số cách khai báo biến trong tập lệnh SQL * Plus.
Đầu tiên là sử dụng VAR, để khai báo một biến ràng buộc. Cơ chế để gán giá trị cho VAR là với lệnh gọi 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 đặc biệt hữu ích khi chúng ta muốn gọi một thủ tục được lưu trữ có tham số OUT hoặc một hàm.
Ngoài ra, chúng ta có thể sử dụng các biến thay thế. Đây là những điều tốt cho chế độ tương tác:
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>
Khi chúng ta đang viết một tập lệnh gọi các tập lệnh khác, nó có thể hữu ích để xác định trước các biến. Đoạn mã này chạy mà không cần nhắc tôi nhập giá trị:
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>
Cuối cùng là khối PL / SQL ẩn danh. Như bạn thấy, chúng ta vẫn có thể gán giá trị cho các biến đã khai báo một cách tương tác:
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>