存储过程输出参数的执行
XuguConnection conn = new XuguConnection();
conn.ConnectionString = conn_xugu;
try
{
conn.Open();
XuguCommand cmd = new XuguCommand();
cmd.Connection = conn;
cmd.CommandText = "select count(*) from user_tables where table_name='TEST_CSH_PROC'";
if (Convert.ToInt32(cmd.ExecuteScalar()) == 1)
{
cmd.CommandText = "drop table TEST_CSH_PROC cascade";
cmd.ExecuteScalar();
}
cmd.CommandText = "CREATE TABLE TEST_CSH_PROC(ID INT,SS VARCHAR(20),KK DATE,SP NUMERIC(12,5),PP FLOAT,TT FLOAT)";
cmd.ExecuteNonQuery();
cmd.CommandText = "insert into TEST_CSH_PROC values(1,'testss',TO_DATE('2016-1-1 23:45:09','YYYY-MM-DD HH24:MI:SS'),321.34,123.123,321.123)";
cmd.ExecuteNonQuery();
cmd.CommandText = "insert into TEST_CSH_PROC values(1,'testss',TO_DATE('2016-1-1 23:45:09','YYYY-MM-DD HH24:MI:SS'),111.23,231.12,322)";
cmd.ExecuteNonQuery();
cmd.CommandText = "insert into TEST_CSH_PROC values(1,'testss',TO_DATE('2016-1-1 23:45:09','YYYY-MM-DD HH24:MI:SS'),234.123,986.234,9322)";
cmd.ExecuteNonQuery();
string sql_str = "CREATE OR REPLACE PROCEDURE P1(IN_ID IN OUT INT,OSS OUT VARCHAR,OKK OUT DATE,OSP OUT NUMERIC,OPP OUT FLOAT,OTT OUT FLOAT)";
sql_str += "AS TEMP_ID INT; BEGIN";
sql_str += " select count(*),ss,kk,sum(sp),sum(pp),sum(tt) into temp_id,oss,okk,osp,opp,ott from TEST_CSH_PROC where id=IN_ID group by ss,kk;";
sql_str += " IN_ID:=TEMP_ID; end;";
cmd.CommandText = sql_str;
cmd.ExecuteNonQuery();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "P1";
XuguParameters par_id = new XuguParameters("IN_ID", XuguDbType.Int);
par_id.Direction = ParameterDirection.InputOutput;
par_id.Value = 1;
cmd.Parameters.Add(par_id);
XuguParameters par_oss = new XuguParameters("OSS", XuguDbType.VarChar, 500);
par_oss.Direction = ParameterDirection.Output;
cmd.Parameters.Add(par_oss);
XuguParameters par_okk = new XuguParameters("OKK", XuguDbType.DateTime);
par_okk.Direction = ParameterDirection.Output;
cmd.Parameters.Add(par_okk);
XuguParameters par_osp = new XuguParameters("OSP", XuguDbType.Numeric);
par_osp.Direction = ParameterDirection.Output;
cmd.Parameters.Add(par_osp);
XuguParameters par_opp = new XuguParameters("OPP", XuguDbType.Double);
par_opp.Direction = ParameterDirection.Output;
cmd.Parameters.Add(par_opp);
XuguParameters par_ott = new XuguParameters("OTT", XuguDbType.Double);
par_ott.Direction = ParameterDirection.Output;
cmd.Parameters.Add(par_ott);
cmd.ExecuteNonQuery();
Console.WriteLine("in_id=" + par_id.Value.ToString());
Console.WriteLine("oss=" + par_oss.Value.ToString());
Console.WriteLine("okk=" + par_okk.Value.ToString());
Console.WriteLine("osp=" + par_osp.Value.ToString());
Console.WriteLine("opp=" + par_opp.Value.ToString());
Console.WriteLine("ott=" + par_ott.Value.ToString());
cmd.Dispose();
conn.Dispose();
return 0;
}
catch (System.Exception ex)
{
Console.WriteLine(ex.ToString());
conn.Close();
return 0;
}