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

Tên cột SQL giống với tên biến PL / SQL - Điều này có thể được thực hiện như thế nào trong một câu lệnh select?

Bạn có thể làm được nếu bạn đủ tự do về định nghĩa của mình về "mà không cần thay đổi tên biến" . Đọc Phân giải tên PL / SQL tuyệt vời cho biết:

Nếu một số nhận dạng được khai báo trong một đơn vị PL / SQL có tên, bạn có thể xác định tên đơn giản của nó (tên trong khai báo) với tên của đơn vị (khối, chương trình con hoặc gói), sử dụng cú pháp sau:

unit_name.simple_identifier_name

Ví dụ sau sẽ in 20 như mong đợi:

create table foo (a number, b number);

insert into foo values(1, 10);
insert into foo values(2, 20);
insert into foo values(3, 30);

begin
  <<bar>>
  declare
    a number;
    b number;
  begin
    a := 2;
    select b into bar.b from foo where a = bar.a;
    dbms_output.put_line(b);
  end;
end;
/

Tên biến không được thay đổi. Thay vào đó, họ hmm ... đủ điều kiện hơn :)

Lưu ý rằng những điều sau không hoạt động:

begin
  declare
    a number;
    b number;
  begin
    a := 2;
    select foo.b into b from foo where foo.a = a;
    dbms_output.put_line(b);
  end;
end;
/

a không đủ điều kiện trong select -statement được hiểu là một cột vì các quy tắc ưu tiên:

Nếu câu lệnh SQL tham chiếu đến tên thuộc cả cột và biến cục bộ hoặc tham số hình thức thì tên cột sẽ được ưu tiên.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle - Tại sao tôi nên sử dụng các gói thay vì các thủ tục hoặc hàm độc lập

  2. Truy vấn SQL để nối các giá trị cột từ nhiều hàng trong Oracle

  3. Khám phá các kiểu cấp gói PL / SQL bằng cách sử dụng dạng xem từ điển Oracle

  4. Cách di chuyển tệp từ thư mục này sang thư mục khác bằng PL SQL

  5. Theo dõi thay đổi bảng trong Oracle