【发布时间】:2014-01-29 16:21:22
【问题描述】:
我遇到了这个错误,我无法解释:
Oracle.DataAccess.Client.OracleException ORA-01008:并非所有变量 绑定在 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 fillRequest,CommandBehavior 行为)在 Oracle.DataAccess.Client.OracleCommand.ExecuteReader() 在 gestao.GestaoDefault.GeraSqlDataSourceDropDownDisciplinasSelectCommand(Int32 选择值)在 c:\inetpub\MiniSites\inscricoes\gestao\Default.aspx.cs:501 行
我的查询:
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
如您所见,我必须对查询进行 vars。 我的代码:
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)
{
从我的代码中我绑定了我的变量。
来自 Oracle 数据库:
CD_LECTIVO-VARCHAR2(7)
CD_CURSO-NUMBER(4)
我在这里检查过,我认为我使用了正确的类型http://msdn.microsoft.com/en-us/library/yk72thhd.aspx
有什么问题?
【问题讨论】: