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

ORA-01008:non tutte le variabili sono associate. Sono legati

So che questa è una vecchia domanda, ma non è stata affrontata correttamente, quindi rispondo per altri che potrebbero incontrare questo problema.

Per impostazione predefinita, ODP.net di Oracle lega le variabili per posizione e tratta ogni posizione come una nuova variabile.

Trattare ogni copia come una variabile diversa e impostarne il valore più volte è una soluzione alternativa e un problema, come menzionato da furman87, e potrebbe portare a bug, se stai cercando di riscrivere la query e spostare le cose.

Il modo corretto consiste nell'impostare la proprietà BindByName di OracleCommand su true come di seguito:

var cmd = new OracleCommand(cmdtxt, conn);
cmd.BindByName = true;

Puoi anche creare una nuova classe per incapsulare OracleCommand impostando BindByName su true nell'istanza, quindi non devi impostare il valore ogni volta. Questo è discusso in questo post