Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để khai báo biến và sử dụng nó trong cùng một tập lệnh SQL của Oracle?

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>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để chạy một thủ tục được lưu trữ trong oracle sql developer?

  2. Làm thế nào để tạo và sử dụng bảng tạm thời trong thủ tục lưu trữ oracle?

  3. Số lượt chọn (1) từ tên_bảng trên bất kỳ bảng cơ sở dữ liệu nào có nghĩa là gì?

  4. Làm thế nào để xem một hình ảnh từ cột blob trong Oracle với JasperReports?

  5. khóa ngoại có luôn tham chiếu đến khóa duy nhất trong bảng khác không?