加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何将布尔参数传递给Oracle过程C#

发布时间:2020-12-12 13:11:09 所属栏目:百科 来源:网络整理
导读:我有问题将布尔参数传递给我在Oracle中的程序.我收到错误 ORA-06550: line 1,column 7: PLS-00306: wrong number or types of arguments in call to 'LOG_ENTRY'ORA-06550: line 1,column 7: PL/SQL: Statement ignored" Oracle中的过程: log_entry(p_rqser
我有问题将布尔参数传递给我在Oracle中的程序.我收到错误
ORA-06550: line 1,column 7:
  PLS-00306: wrong number or types of arguments in call to 'LOG_ENTRY'
ORA-06550: line 1,column 7:
  PL/SQL: Statement ignored"

Oracle中的过程:

log_entry(p_rqserial in integer,p_orig in varchar,p_type in char,p_objname in varchar,p_info in varchar,p_text in varchar,p_with_commit boolean)

这是我的代码:

cmd = new Oracle.DataAccess.Client.OracleCommand("Vbank_pkg.vb_log_entry",con);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add("p_rqserial",OracleDbType.Int32).Value = Log_Serial;
    cmd.Parameters.Add("p_orig",OracleDbType.Varchar2).Value = "'" + p_orig + "'";
    cmd.Parameters.Add("p_type",OracleDbType.Char).Value = "'" + p_type + "'";
    cmd.Parameters.Add("p_objname",OracleDbType.Varchar2).Value = "'" + p_objname + "'";
    cmd.Parameters.Add("p_info",OracleDbType.Varchar2).Value = "'" + p_info + "'";
    cmd.Parameters.Add("p_text",OracleDbType.Varchar2).Value = "'" + p_text + "'";
    cmd.Parameters.Add("p_with_commit",OracleDbType.Char).Value =true;
    cmd.ExecuteNonQuery();//Here error

有谁知道怎么做?因为我找不到任何解决方案,许多人说将bool参数从C#传递给Oracle是不可能的,但我不敢相信没有办法.

尝试使用OracleCommand的BindByName属性为true来强制数据提供程序按名称绑定这些参数,而不仅仅是索引.您不需要传递’作为参数.它是ado.net中参数的主角.

ODP.NET不支持布尔数据类型.只需使用1或0作为char值来持久化它.

样品:

cmd = new Oracle.DataAccess.Client.OracleCommand("Vbank_pkg.vb_log_entry",con);

cmd.BindByName = true;
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("p_rqserial",OracleDbType.Int32).Value = Log_Serial;
cmd.Parameters.Add("p_orig",OracleDbType.Varchar2).Value = p_orig;
cmd.Parameters.Add("p_type",OracleDbType.Char).Value = p_type;
cmd.Parameters.Add("p_objname",OracleDbType.Varchar2).Value = p_objname;
cmd.Parameters.Add("p_info",OracleDbType.Varchar2).Value = p_info;
cmd.Parameters.Add("p_text",OracleDbType.Varchar2).Value = p_text;
cmd.Parameters.Add("p_with_commit",OracleDbType.Char).Value = "1";

cmd.ExecuteNonQuery();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读