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

Sử dụng các biến liên kết trong SQL Plus với nhiều hơn một hàng được trả về?

Tương tự như cách tiếp cận của @ Glenn, nhưng bạn có thể khai báo một biến liên kết trong SQL * Plus và sử dụng nó trong một truy vấn SQL thuần túy. Trước tiên, hãy khai báo nó với var[iable] lệnh:

variable comment_id number;

Sau đó, đặt nó bằng exec[ute] , về cơ bản là một khối ẩn danh:

execute :comment_id := 3052753;

Sau đó, chạy truy vấn ban đầu của bạn với :comment_id tham chiếu và không có BEGIN hoặc END :

select e.label as doc_name,
                       e.url,
                       i.item_id,
                       'multi' as form_type
                from cr_items i, cr_extlinks e
                where i.parent_id = :comment_id
                and e.extlink_id = i.item_id
               UNION
                select null as doc_name,
                       utl_raw.cast_to_varchar2(DBMS_LOB.SUBSTR(r.content, 2000, 1))  as url,
                       r.item_id,
                       'single' as form_type
                from cr_revisions r
                where r.revision_id = ( select content_item.get_latest_revision(:comment_id) from dual);

Tôi không nghĩ rằng có nhiều sự khác biệt về chức năng giữa hai cách tiếp cận ngoài sở thích cá nhân và cả hai đều hoạt động trong SQL Developer (khi chạy dưới dạng tập lệnh). Tôi thấy điều này dễ dàng hơn khi chạy SQL được sao chép từ tệp Pro * C đã sử dụng : biểu mẫu ràng buộc, hoàn toàn vì bạn không phải sửa đổi mã.

Tình cờ, bạn có thể viết:

where r.revision_id = ( select content_item.get_latest_revision(:comment_id) from dual)

mà không có select bổ sung , như:

where r.revision_id = content_item.get_latest_revision(:comment_id)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cách chèn khóa ngoại vào bảng

  2. Làm thế nào để có được một thế kỷ từ một ngày trong Oracle

  3. Cách chèn thông tin vào các cột cho email

  4. Oracle sang Excel - Quy trình xuất PL / SQL

  5. Hàm TO_TIMESTAMP () trong Oracle