sql >> Database >  >> RDS >> Oracle

Oracle.DataAccess (ODP.NET) Array Binding Value valt niet binnen het verwachte bereik

Ik denk dat je een Array Bind probeert samen te voegen {simpelweg een array aan een parameter binden om het meerdere keren te laten uitvoeren -- dit is hoe het voorbeeld in de link die je hebt gegeven het deed} met een Associative Array {re:PLSQLAssociativeArray met een INPUT-param van TABLE OF}.

Aangezien je je pakket/proc dat je gebruikt niet hebt gepost, ga ik ervan uit dat je zoiets doet (ik schrijf dit gewoon op om de veronderstelling te valideren)

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

Om dit uit te voeren, zoals de auteur van het artikel, moet je ArrayBindCount ( bekijk deze link, het heeft ook een voorbeeld) .Dit geeft ook aan dat als je meerdere parameters hebt, er voor elke parameter een ARRAY wordt verwacht.

Om dit nu te laten uitvoeren voor alle P_JOB_TITLE() die u doorgeeft

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

Voor een plSQLAssociativeArray-voorbeeld, bekijk de voorbeelden die u hebt gekregen toen u ODP installeerde @ %ORA_HOME%\odp.net\samples\2.x\AssocArray

en voor voorbeelden van array-bindingen (vanaf de door u verstrekte link)@ %ORA_HOME%\odp.net\samples\2.x\ArrayBind




  1. Reguliere expressies gebruiken voor het valideren van mysql-statements

  2. Ik kan geselecteerde records uit een tabel in de database in google sql cloud niet uitvoeren met php

  3. Vraag op uit bestand in SPRING BOOT met @Query

  4. Mysql - tweede auto_increment col met diff-gedrag