Oracle
 sql >> база данни >  >> RDS >> Oracle

Стойността на свързване на масив на Oracle.DataAccess (ODP.NET) не попада в очаквания диапазон

Мисля, че се опитвате да обедините Array Bind {просто обвързване на масив с параметър, за да се изпълни многократно -- ето как го направи примерът в предоставената от вас връзка} с Асоциативен масив {re:PLSQLAssociativeArray с INPUT параметър от TABLE OF}.

Тъй като не сте публикували вашия пакет/процедура, която изпълнявате, предполагам, че правите нещо подобно (просто записвам това, за да потвърдим предположението)

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

За да изпълните това като автора на статията, трябва да използвате ArrayBindCount ( вижте тази връзка, има и пример) .Това също така показва, че ако имате няколко параметъра, той ще очаква ARRAY за всеки от тях.

Сега, за да се изпълни това за всички P_JOB_TITLE(), които подавате

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

За пример за plSQLAssociativeArray разгледайте предоставените примери, когато сте инсталирали ODP @ %ORA_HOME%\odp.net\samples\2.x\AssocArray

и за примери за обвързване на масив (както от предоставената от вас връзка)@ %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. logback влизането в oracle причинява диалектна грешка

  2. PL/SQL, как да избягам от единични кавички в низ?

  3. Конвертирайте OracleParameter.Value в Int32

  4. Oracle подреждане по за различни условия

  5. 2 начина да получите минути от стойност на дата и час в базата данни на Oracle