I've having this error and I can't explain it:
Oracle.DataAccess.Client.OracleException ORA-01008: not all variables bound at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck) at Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requery, Boolean fillRequest, CommandBehavior behavior) at Oracle.DataAccess.Client.OracleCommand.ExecuteReader() at gestao.GestaoDefault.GeraSqlDataSourceDropDownDisciplinasSelectCommand(Int32 selectValue) in c:\inetpub\MiniSites\inscricoes\gestao\Default.aspx.cs:line 501
My query:
SELECT DISTINCT
cse.t_tbdiscip.cd_discip,
cse.t_tbdiscip.ds_discip
FROM cse.t_tbdiscip, cse.t_turma, cse.t_plandisc
WHERE cse.t_plandisc.cd_curso = :CD_CURSO
AND cse.t_turma.cd_curso = :CD_CURSO
AND cse.t_plandisc.cd_activa = 'S'
AND cse.t_turma.estado = 'S'
AND cse.t_tbdiscip.cd_discip = cse.t_plandisc.cd_discip
AND cse.t_tbdiscip.cd_discip = cse.t_turma.cd_discip
AND cse.t_turma.cd_a_s_cur IS NOT NULL
AND cse.t_turma.cd_lectivo = :CD_LECTIVO
ORDER BY cse.t_tbdiscip.ds_discip
As you can see I have to vars to the query. My code:
OracleConnection oracleSqlConnection = new OracleConnection(ConOracleString);
try
{
// Just to see if any value is passed to the query
LiteralMensagens.Text += String.Format("Curso : " + curso + "<br /><br />");
LiteralMensagens.Text += String.Format("Lectivo : " + lectivo + "<br /><br />");
LiteralMensagens.Text += String.Format("query : " + query + "<br /><br />");
oracleSqlConnection.Open();
OracleCommand cmdOracle = new OracleCommand(query, oracleSqlConnection);
cmdOracle.CommandType = CommandType.Text;
cmdOracle.Parameters.Clear();
cmdOracle.Parameters.Add(":CD_CURSO", OracleDbType.Decimal).Value = curso;
cmdOracle.Parameters.Add(":CD_LECTIVO", OracleDbType.Varchar2).Value = lectivo;
OracleDataReader oracleDataReader = cmdOracle.ExecuteReader();
while (oracleDataReader.Read())
{
LiteralMensagens.Text += string.Format((String)oracleDataReader["DS_DISCIP"]);
}
}
catch (Exception ex)
{
From my code I bound my vars.
From the Oracle DB:
CD_LECTIVO- VARCHAR2(7)
CD_CURSO- NUMBER(4)
I've checked here and I think I'm using the correct types http://msdn.microsoft.com/en-us/library/yk72thhd.aspx
What can be wrong?