Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle.DataAccess (ODP.NET) Wartość powiązania tablicy nie mieści się w oczekiwanym zakresie

Myślę, że próbujesz scalić Array Bind {po prostu powiąż tablicę z parametrem, aby była wykonywana wiele razy – tak zrobił to przykład w podanym linku} z tablicą asocjacyjną {re:PLSQLAssociativeArray z parametrem INPUT TABLE OF}.

Ponieważ nie opublikowałeś swojego pakietu/procedury, którą uruchomiłeś, zakładam, że robisz coś takiego (po prostu odkładasz to, aby potwierdzić założenie)

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

Aby wykonać to jak autor artykułu, musisz użyć ArrayBindCount ( sprawdź ten link, ma też przykład) .Wskazuje to również, że jeśli masz wiele parametrów, będzie oczekiwał tablicy ARRAY dla każdego z nich.

Teraz, aby wykonać to dla wszystkich P_JOB_TITLE(), które przekazujesz

//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);

Aby zapoznać się z przykładem plSQLAssociativeArray spójrz na przykłady dostarczone podczas instalacji ODP @ %ORA_HOME%\odp.net\samples\2.x\AssocArray

a dla przykładów wiązania tablic (jak z podanego linku)@ %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. libaio.so.1:nie można otworzyć pliku obiektu współdzielonego

  2. Jaka jest różnica między złączeniami ANSI i non-ANSI i które polecacie?

  3. Jak zwiększyć rozmiar bufora w Oracle SQL Developer, aby wyświetlić wszystkie rekordy?

  4. Łączenie 2 zbiorów danych przez przecięcie

  5. Jak wykonać plik skryptu .SQL za pomocą c#