繁体   English   中英

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

[英]how to define Output parameter as character string for Oracle procedure in c#?

这是返回字符串文字的简单存储过程

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();”炸弹

如何检索此输出?

好的-我找到了解决方法-您必须包括OracleCollectionType,在我的情况下,我将其设置为None:

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

现在我的程序可以了。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM