C# ExecuteScalar在应该有值时不返回值

C# ExecuteScalar在应该有值时不返回值,c#,oracle,executescalar,C#,Oracle,Executescalar,我正在用一个有效值调用ExecuteScalar,它在我的上一个值上起作用。我正在使用使用Oracle.ManagedDataAccess.Client。然而,在这个调用中,当值应该是“Q”时,它返回null。代码如下: cmd.Parameters.Add(新的OracleParameter(“Cbrtaxfilcd_Descr”,cbrdemployers.Cbrtaxfilcd_Descr)); //cmd.CommandText=“从CBR_TAX_filling_CODES中选择代码,

我正在用一个有效值调用
ExecuteScalar
,它在我的上一个值上起作用。我正在使用
使用Oracle.ManagedDataAccess.Client。然而,在这个调用中,当值应该是“Q”时,它返回
null
。代码如下:

cmd.Parameters.Add(新的OracleParameter(“Cbrtaxfilcd_Descr”,cbrdemployers.Cbrtaxfilcd_Descr));
//cmd.CommandText=“从CBR_TAX_filling_CODES中选择代码,其中DESCR=:Cbrtaxfilcd_DESCR”;
cmd.CommandText=“从CBR_TAX_file_Code中选择代码,其中DESCR=‘季度’;
尝试
{
//应该是字符串
cbrenders.Cbrtaxfilcd_Code=Convert.ToString(cmd.ExecuteScalar());
}
捕获(例外情况除外)
{
var消息=ex.消息;
//待办事项
}

ExecuteScalar
返回
null
,其中查询不返回任何行。如果在SQL Developer或Toad中运行未注释的一行,其中
'Quarterly'
是硬编码的,那么您是否真的在第一列中得到了一行
'Q'
以便正确绑定名称。否则,它们将按顺序绑定,如果有多个参数,则必须按它们在查询中出现的顺序添加它们。这可能会导致混乱。当我手动运行查询时,确实会得到一个Q。哇。添加cmd.BindByName=true;解决了这个问题。非常感谢你。