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

Giá trị ràng buộc mảng Oracle.DataAccess (ODP.NET) không nằm trong phạm vi mong đợi

Tôi nghĩ rằng bạn đang cố gắng hợp nhất một Liên kết mảng {chỉ cần liên kết một mảng với một tham số để nó thực thi nhiều lần - đây là cách ví dụ trong liên kết bạn cung cấp đã thực hiện điều đó} với Mảng liên kết {re:PLSQLAssociativeArray với tham số INPUT của TABLE OF}.

Vì bạn không đăng gói / chương trình của mình mà bạn đang chạy, tôi cho rằng bạn đang làm điều gì đó như thế này (chỉ cần đặt điều này xuống để xác thực giả định)

procedure insertdata(P_JOB_TITLE IN VARCHAR2) as
begin
insert into myTable(x) value (P_JOB_TITLE);
end  insertdata;

Để thực hiện điều này giống như tác giả của bài viết, bạn cần sử dụng ArrayBindCount ( hãy xem liên kết này, nó cũng có một ví dụ) . Điều này cũng chỉ ra rằng, nếu bạn có nhiều tham số, nó sẽ yêu cầu ARRAY cho mỗi tham số.

Bây giờ để điều này được thực thi cho tất cả P_JOB_TITLE () mà bạn chuyển vào

//this was missing in your example and MUST be there to tell ODP how many array elements to expect
cmd.ArrayBindCount = 2;

 string[] jobTitleArray = {"name1", "name1"};

OracleParameter paramNames= new OracleParameter("P_JOB_TITLE", OracleDbType.Varchar2);

   //paramNames.CollectionType = OracleCollectionType.PLSQLAssociativeArray;/*once again, you are passing in an array of values to be executed and not a pl-sql table*/

    //paramNames.Size = 2; /* this is unnecessary since it is for a plsql-associative array*/
    paramNames.Value =  jobTitleArray ;
    cmd.Parameters.Add(paramNames);

Đối với ví dụ về plSQLAssociativeArray, hãy xem các mẫu được cung cấp khi bạn cài đặt ODP @% ORA_HOME% \ odp.net \ samples \ 2.x \ PGSArray

và đối với các ví dụ liên kết mảng (như từ liên kết bạn đã cung cấp) @% ORA_HOME% \ odp.net \ samples \ 2.x \ ArrayBind




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ResultSet.getString () trên cột VARCHAR2 trả về chuỗi trống

  2. Xử lý dữ liệu hạt giống trong bản vá trực tuyến R12.2

  3. java.sql.SQLException:ORA-00904

  4. Python> Kết nối với JDBC với tên dịch vụ Oracle (jaydebeapi)

  5. Chuyển đổi truy vấn tiên tri thành các loại do người dùng xác định trong pl / sql