首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要在oracle中使用ADO.net在一个脚本中同时执行一个过程和对一个临时表执行select查询

我需要在oracle中使用ADO.net在一个脚本中同时执行一个过程和对一个临时表执行select查询
EN

Stack Overflow用户
提问于 2015-03-16 16:30:38
回答 1查看 174关注 0票数 0

在oracle中,需要使用ADO.net在一个脚本中同时执行一个过程和对一个临时表执行select查询。我是先知的初学者。这是我的代码:

代码语言:javascript
复制
string queryString = "DECLARE PI_ACCOUNTS_COUNT NUMBER; pstdh account_dataheader; BEGIN SGC.EGOV.GET_ACOUNTS_DEBT( 7660774, 'CPR', '530806835', PI_ACCOUNTS_COUNT, pstdh );EXECUTE IMMEDIATE 'select * from SGC.EGOV_ARR_ACCOUNTS where rownum = 1';END; ";

然后我使用execute reader来执行它

我没有得到任何错误执行这个,也没有结果。

我能够单独执行该过程,并像这样获得输出参数。

代码语言:javascript
复制
            using (OracleConnection conn = new OracleConnection(connection))  // C#
            {
                OracleCommand cmd = conn.CreateCommand();
                cmd.CommandText = "SGC.EGOV.GET_ACOUNTS_DEBT";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("pl_gsn", OracleDbType.Int64).Value = 7660774;
                cmd.Parameters.Add("pc_id_type", OracleDbType.Varchar2).Value = "asd";
                cmd.Parameters.Add("pc_doc_id", OracleDbType.Varchar2).Value= "asd";
                cmd.Parameters.Add("PI_ACCOUNTS_COUNT",OracleDbType.Int32).Direction = ParameterDirection.Output;
                OracleParameter objParam = new OracleParameter();
                objParam.OracleDbType = OracleDbType.Object;
                objParam.Direction = ParameterDirection.Output;
                objParam.UdtTypeName = "ACCOUNT_DATAHEADER";
                objParam.Value = pst_dataheader;
                cmd.Parameters.Add(objParam);

                try
                {
                    conn.Open();
                    cmd.ExecuteNonQuery();
                    response.AccountsCount = Convert.ToInt32(cmd.Parameters["PI_ACCOUNTS_COUNT"].Value.ToString());
                    pst_dataheader = (ACCOUNT_DATAHEADER)objParam.Value;
                    response.AccountsCount = pst_dataheader.ACCOUNTS_COUNT;
                    response.ErrorCode= pst_dataheader.ERRCODE;`
                    response.TotalBillCount = pst_dataheader.TOTALBILLCOUNT;

                }
                catch (Exception)
                {

                    throw;
                }

此外,在sql developer plus中执行以下语句时也会得到结果: set serveroutput on

任何形式的帮助都是非常感谢的。提前感谢各位..

EN

回答 1

Stack Overflow用户

发布于 2015-03-17 21:32:49

通过绑定变量来替换命令中要作为参数传递的所有值:

  1. (例如,按以下顺序将命令参数替换为queryString::pl_gsn ) :name绑定变量(例如,
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29072430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档