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

C# 需要在oracle中使用ADO.net在一个脚本中对临时表执行过程和select查询,c#,oracle,C#,Oracle,需要在oracle中使用ADO.net在一个脚本中对临时表执行过程和select查询。我是甲骨文的初学者。 这是我的代码: 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

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

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; ";
然后我使用执行阅读器来执行它

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

我能够单独执行该过程,并获得如下输出参数

            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中执行以下语句时也会得到结果: 将服务器输出设置为on

非常感谢您的任何帮助。提前谢谢各位

  • 替换查询字符串中的所有值,您希望通过绑定变量:name作为参数传递(例如:pl_gsn而不是7660774)

  • create command
    oraclecondm cmd=neworaclecondm(康涅狄格州queryString)

  • 按以下顺序向cmd添加参数:name bind variables(例如
    cmd.parameters.add(“pl_gsn”,OracleDbType.Int64,7660774,ParameterDirection.Input);

  • 执行