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

Gọi thủ tục Oracle với tham số kiểu bộ sưu tập PL / SQL qua .NET

Lệnh gọi thủ tục qua ODP.NET chỉ hỗ trợ các mảng liên kết, tức là với INDEX BY ... , Bảng lồng nhau không được hỗ trợ.

Một giải pháp là chuyển đổi trong thủ tục Orale của bạn:

CREATE OR REPLACE PACKAGE test_package_gkeu IS

    TYPE test_type IS TABLE OF NUMBER;    
    TYPE test_type_associative IS TABLE OF NUMBER INDEX BY INTEGER;

PROCEDURE TEST1 (pvTest IN test_type_associative ) IS

v test_type := test_type();
BEGIN
   v.Extend(pvTest.COUNT);
   for i in pvTest.First..pvTest.Last loop
       v(i) := pvTest(i)
   end loop;

select *
into ...
from receiver r
where r.receiverid MEMBER OF (v);

END;

Đối với các câu lệnh DML cũng xem xét điều này:

FORALL i IN INDICES OF pvTest 
    INSERT INTO MY_TABLE (COL_A)
    VALUES (pvTest(i));

or 

FORALL i IN INDICES OF pvTest 
    DELETE FROM receiver 
    WHERE receiverid  = pvTest(i);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chạy thủ tục lưu trữ trong nhà phát triển SQL?

  2. Làm thế nào để sử dụng hàm LISTAGG của Oracle với một bộ lọc duy nhất?

  3. Cách thêm chỉ báo AD / BC vào ngày trong Oracle

  4. Giới thiệu về con trỏ tham chiếu PL / SQL trong cơ sở dữ liệu Oracle

  5. Cách sử dụng Mảng liên kết Oracle trong truy vấn SQL