Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ORA-01008:nem todas as variáveis ​​estão vinculadas. Eles estão vinculados


Eu sei que esta é uma pergunta antiga, mas não foi abordada corretamente, por isso estou respondendo a outras pessoas que possam encontrar esse problema.

Por padrão, o ODP.net da Oracle vincula variáveis ​​por posição e trata cada posição como uma nova variável.

Tratar cada cópia como uma variável diferente e definir seu valor várias vezes é uma solução alternativa e uma dor, como furman87 mencionou, e pode levar a erros, se você estiver tentando reescrever a consulta e mover as coisas.

A maneira correta é definir a propriedade BindByName do OracleCommand como true conforme abaixo:
var cmd = new OracleCommand(cmdtxt, conn);
cmd.BindByName = true;

Você também pode criar uma nova classe para encapsular o OracleCommand definindo o BindByName como true na instanciação, para que você não precise definir o valor todas as vezes. Isso é discutido neste post