如何在C#中将输出参数定义为Oracle过程的字符串?

时间:2016-03-17 18:45:14

标签: c# oracle

以下是返回字符串文字

的简单存储过程
PROCEDURE getUserValidateProfileValue (      
  outParam1 OUT VARCHAR2)
AS
BEGIN  
    SELECT 'testABC' into outParam1 from dual;
END getUserValidateProfileValue;

这在Toad中运行正常。以下是我如何从我的C#应用​​程序中调用它(注意:我有几个其他程序可以使用相同的连接等调用,这些都可以正常工作)

...
using (OracleCommand command = DaoHelper.GetOracleBoundByNameStoredProcedureCommand(conn, schema, pkg, "getUserValidateProfileValue"))
{
   command.Parameters.Add("outParam1", OracleDbType.Varchar2, 2000, ParameterDirection.Output);
   command.ExecuteNonQuery(); <<<---bombs out here
   s1 = command.Parameters["outParam1"].Value.ToString();
}

这次炸弹袭击了“command.ExecuteNonQuery();”

如何检索此输出?

2 个答案:

答案 0 :(得分:1)

好的 - 我找到了修复程序 - 你必须包含OracleCollectionType,在我的例子中我设置为None:

command.Parameters.Add("outParam1", OracleDbType.Varchar2, 2000, OracleCollectionType.None, ParameterDirection.Output);

现在我的程序有效。

答案 1 :(得分:0)

尝试代替当前参数add,看看它是否有帮助?

command.Parameters.Add(new SqlParameter("outParam1", OracleDbType.Varchar2));