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

como executar várias consultas oracle c #


Embora você esteja usando nomes para seus parâmetros, seu driver os está tratando posicionalmente. Você pode dizer porque está (quase) correspondendo a :1 com o nome p_cr1 - '1' não é um nome válido. Ele não reclama, pois corresponde posicionalmente - mas isso significa que está tentando usar o P_para para :1 , e como o tipo disso está errado, isso explica o erro que você vê.

Pode haver uma maneira de alterar o comportamento do driver, mas por enquanto você pode apenas trocar a ordem em que os vincula - para que os vínculos ocorram na mesma ordem (posição) em que as variáveis ​​aparecem na consulta. Então:
cmd.Parameters.Add("p_cr1", OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output);
cmd.Parameters.Add(new OracleParameter(":P_para", OracleDbType.Int64)).Value = Convert.ToInt64(Textbox.Text);
cmd.Parameters.Add("p_cr2", OracleDbType.RefCursor, DBNull.Value, ParameterDirection.Output);