在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; ";然后我使用execute reader来执行它
我没有得到任何错误执行这个,也没有结果。
我能够单独执行该过程,并像这样获得输出参数。
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
任何形式的帮助都是非常感谢的。提前感谢各位..
发布于 2015-03-17 21:32:49
通过绑定变量来替换命令中要作为参数传递的所有值:
https://stackoverflow.com/questions/29072430
复制相似问题