sql >> Database teknologi >  >> RDS >> Oracle

Oracle.DataAccess (ODP.NET) Array Binding Value falder ikke inden for det forventede interval

Jeg tror, ​​du forsøger at flette en Array Bind {simply binding an array to a param to have it eksekveret flere gange -- sådan gjorde eksemplet i det link, du angav, det} med en Associative Array {re:PLSQLAssociativeArray med en INPUT-param af TABLE OF}.

Da du ikke postede din pakke/proc, som du kører, antager jeg, at du gør noget som dette (bare at lægge dette ned for at validere antagelsen)

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

For at udføre dette som forfatteren af ​​artiklen skal du bruge ArrayBindCount ( tjek dette link, det har også et eksempel) .Dette indikerer også, at hvis du har flere parametre, vil det forvente en ARRAY for hver enkelt.

Nu for at få dette udført for alle de P_JOB_TITLE(), som du sender ind

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

For et eksempel på plSQLAssociativeArray, se eksemplerne, der blev leveret, da du installerede ODP @ %ORA_HOME%\odp.net\samples\2.x\AssocArray

og for eksempler på arraybinding (som fra det link, du angav)@ %ORA_HOME%\odp.net\samples\2.x\ArrayBind




  1. Hvordan opretter man et SQL-injektionsangreb med Shift-JIS og CP932?

  2. Dette resultat er et resultat, der kun er fremad, og at kalde rewind() efter at have bevæget sig fremad understøttes ikke - Zend

  3. Hvordan bruger man LIKE til mysql-søgning med JOIN og BESTIL BY antallet af de fleste rækker/stemmer i stemmetabellen?

  4. Formatering af tal med kommaer i MariaDB