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

Làm cách nào để sử dụng Con trỏ tham chiếu Oracle từ C # ODP.NET dưới dạng Tham số ReturnValue mà không cần sử dụng Hàm hoặc Thủ tục được Lưu trữ?

Tôi sẽ thử một câu trả lời thay vì một nhận xét khác.

Như tôi đã nói trong một nhận xét, một câu lệnh chọn thuần túy / đơn giản không hoạt động trong PL / SQL. Nhưng tôi đã sai khi nói rằng bạn cần một hàm được lưu trữ để trả về con trỏ tham chiếu.

Nhưng điều đầu tiên trước tiên:Loại "id_array" mà bạn khai báo trong khối PL / SQL của mình là kiểu PL / SQL. Nó không thể được sử dụng trong câu lệnh chọn con trỏ tham chiếu. Thay vào đó, bạn sẽ cần một kiểu SQL:

create type id_array as table of number;

Thao tác này chỉ cần được thực hiện một lần, giống như "tạo bảng".

Khối PL / SQL của bạn sau đó có thể trông giống như sau:

DECLARE
    t_ids   id_array;
BEGIN
    UPDATE WorkerStatus
    SET
         StateId = :StateId
        ,StateReasonId = :StateReasonId
    WHERE
        StateId = :CurrentStateId
    RETURNING Id BULK COLLECT INTO t_Ids;

    OPEN :rcursor FOR SELECT * FROM TABLE(cast(t_Ids as id_array));    
END;

Tái bút:
Trong khi tập hợp bài đăng này, tôi nhận ra ORA-00942 có thể đến từ đâu. Mảng t_ids dựa trên kiểu PL / SQL, kiểu này không được biết / có sẵn ở phía 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. Khai thác dữ liệu Oracle (ODM) - Cài đặt &Thiết lập

  2. thay đổi cột đổi tên bảng trong cơ sở dữ liệu oracle

  3. Lỗi cài đặt máy khách Oracle - đường dẫn quá dài

  4. Hàm TRANSLATE () trong Oracle

  5. Làm cách nào để tạo cơ sở dữ liệu mới sau khi cài đặt ngay cơ sở dữ liệu oracle 11g Express Edition?