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

Làm cách nào để khai báo và sử dụng các biến trong PL / SQL giống như trong T-SQL?

Câu trả lời đã sửa đổi

Nếu bạn không gọi mã này từ một chương trình khác, một tùy chọn là bỏ qua PL / SQL và thực hiện nó hoàn toàn trong SQL bằng cách sử dụng các biến liên kết:

var myname varchar2(20);

exec :myname := 'Tom';

SELECT *
FROM   Customers
WHERE  Name = :myname;

Trong nhiều công cụ (chẳng hạn như Toad và SQL Developer), bỏ qua varexec các câu lệnh sẽ khiến chương trình nhắc bạn về giá trị.

Câu trả lời ban đầu

Một sự khác biệt lớn giữa T-SQL và PL / SQL là Oracle không cho phép bạn hoàn toàn trả về kết quả của một truy vấn. Kết quả luôn phải được trả về một cách rõ ràng theo một cách nào đó. Cách đơn giản nhất là sử dụng DBMS_OUTPUT (gần tương đương với print ) để xuất biến:

DECLARE
   myname varchar2(20);
BEGIN
     myname := 'Tom';

     dbms_output.print_line(myname);
END;

Tuy nhiên, điều này không thực sự hữu ích nếu bạn đang cố gắng trả về một tập hợp kết quả. Trong trường hợp đó, bạn sẽ muốn trả về một bộ sưu tập hoặc một con trỏ chuột. Tuy nhiên, việc sử dụng một trong hai giải pháp đó sẽ yêu cầu gói mã của bạn trong một hàm hoặc thủ tục và chạy hàm / thủ tục từ thứ có khả năng tiêu thụ kết quả. Một hàm hoạt động theo cách này có thể trông giống như sau:

CREATE FUNCTION my_function (myname in varchar2)
     my_refcursor out sys_refcursor
BEGIN
     open my_refcursor for
     SELECT *
     FROM   Customers
     WHERE  Name = myname;

     return my_refcursor;
END my_function;


  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 để nâng cao một Ngoại lệ bên trong một Trigger? Có cách nào để làm việc này không?

  2. oracle plsql:cách phân tích cú pháp XML và chèn vào bảng

  3. Làm cách nào để bạn thiết lập một máy chủ được liên kết với cơ sở dữ liệu Oracle trên SQL 2000/2005?

  4. Trình điều khiển được quản lý Oracle có thể sử dụng async / await đúng cách không?

  5. Nhà cung cấp không tương thích với phiên bản lỗi máy khách Oracle khi sử dụng Oracle.DataClient