Skip to content

存储函数包的执行

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='T_PACK_FUNC1'";//T_pack_func1
    if (Convert.ToInt32(cmd.ExecuteScalar()) == 1)
    {
        cmd.CommandText = "drop table T_PACK_FUNC1 cascade";
        cmd.ExecuteScalar();
    }

    cmd.CommandText = "create table T_pack_func1(c1 int ,c2 double,c3 datetime,c4 numeric(32,8),c5 varchar)";
    cmd.ExecuteNonQuery();
    cmd.CommandText = " insert into  T_pack_func1 values(1,null,'2017-07-10 15:01:35',33493.23423,'this is the func1 values 1')";
    cmd.ExecuteNonQuery();
    cmd.CommandText = " insert into  T_pack_func1 values( 2,23423.23,null,98763.2333,'here is the func1 the No2 value and so we need ')";
    cmd.ExecuteNonQuery();
    cmd.CommandText = "insert into  T_pack_func1 values( 3,972.332,'2017-07-09 19:45:22',null,'so we get the third 3 value')";
    cmd.ExecuteNonQuery();

    cmd.CommandText = "insert into  T_pack_func1 values( 4, 243.2342,'2017-07-04 20:35:18',3454.32,null)";
    cmd.ExecuteNonQuery();
    cmd.CommandText = "insert into  T_pack_func1 values( 5,843.23,'2008-09-01 12:25:38',205.23,'')";
    cmd.ExecuteNonQuery();
    cmd.CommandText = "select count(*) from user_tables where table_name='T_PACK_PAN1'";//T_pack_pan1
    if (Convert.ToInt32(cmd.ExecuteScalar()) == 1)
    {
        cmd.CommandText = "drop table T_PACK_PAN1 cascade";
        cmd.ExecuteScalar();
      }
      cmd.CommandText = "create table T_pack_pan1(c1 bigint,c2 char(50),c3 date,c4 int, c5 float)";
    cmd.ExecuteNonQuery();
    cmd.CommandText = "insert into T_pack_pan1 values(123,'sdishosho hereess ','2017-07-01',null,324.56)";
    cmd.ExecuteNonQuery();
    cmd.CommandText = "  insert into T_pack_pan1 values(456,'some get out the sdishosho hereess ',null,234,45.324) ";
    cmd.ExecuteNonQuery();
    cmd.CommandText = "  insert into T_pack_pan1 values(789,null,'2017-07-03',34,23445.23) ";
    cmd.ExecuteNonQuery();
    cmd.CommandText = "insert into T_pack_pan1 values(678,'the 4fourth in ','2017-07-04',44,null)";
    cmd.ExecuteNonQuery();

    cmd.CommandText = "select count(*) from user_PACKAGES where PACK_name='PACK_NAME1'";//PACK_NAME1
    if (Convert.ToInt32(cmd.ExecuteScalar()) == 1)
    {
        cmd.CommandText = "alter package pack_name1 recompile";
        cmd.ExecuteScalar();
    }
    Else
    {
        string sql_pack_head = "create or replace  package pack_name1 is ";
        sql_pack_head += " function pa_func1(aa in int,";
        sql_pack_head += " bb in out double,";
        sql_pack_head += " cc out datetime,";
        sql_pack_head += " dd out numeric,";
        sql_pack_head += " ee out varchar)";
        sql_pack_head += " return datetime;";
        sql_pack_head += " procedure proc_pan1";
        sql_pack_head += "(aa in bigint,bb in out char(50), cc out date, dd out int, ee out float);";
        sql_pack_head += " end; ";
        cmd.CommandText = sql_pack_head;
        cmd.ExecuteNonQuery();
        string sql_pack_body = "create or replace package body pack_name1 is";
        sql_pack_body += " function pa_func1(";
        sql_pack_body += " aa in int,  bb in out double,  cc out datetime,  dd out numeric,  ee out varchar  )";
        sql_pack_body += " return datetime   as   TMP_DT DATETIME; begin";
        sql_pack_body += " select c2 ,c3,c4,c5 into bb,cc,dd,ee from T_pack_func1 where c1=aa;";
        sql_pack_body += " TMP_DT:=cc;"; //sql_pack_body += "";
            sql_pack_body += " return TMP_DT;end;";
        sql_pack_body += " procedure proc_pan1(";
            sql_pack_body += " aa in bigint,     bb in out char(50),     cc out date,     dd out int,     ee out float)";
        sql_pack_body += " as begin ";
        sql_pack_body += " select c2 ,c3,c4,c5 into bb,cc,dd,ee from T_pack_pan1  where c1=aa;";
        sql_pack_body += " end;  ";
        sql_pack_body += " end; ";
        cmd.CommandText = sql_pack_body;
            cmd.ExecuteNonQuery();
    }
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "PACK_NAME1.PA_FUNC1";
    XuguParameters aa = new XuguParameters("AA", XuguDbType.Int);
    aa.Direction = ParameterDirection.Input;
    aa.Value =2;//2 3 4 5
    cmd.Parameters.Add(aa);

    XuguParameters bb = new XuguParameters("BB", XuguDbType.Double);
    bb.Direction = ParameterDirection.InputOutput;
    bb.Value = 1.0;
    cmd.Parameters.Add(bb);

    XuguParameters cc = new XuguParameters("CC", XuguDbType.DateTime);
    cc.Direction = ParameterDirection.Output;
    cmd.Parameters.Add(cc);
    XuguParameters dd = new XuguParameters("DD", XuguDbType.Numeric);
    dd.Direction = ParameterDirection.Output;
    cmd.Parameters.Add(dd);

    XuguParameters ee = new XuguParameters("ee", XuguDbType.VarChar, 200);
    ee.Direction = ParameterDirection.Output;
    cmd.Parameters.Add(ee);

    XuguParameters ff = new XuguParameters("ff", XuguDbType.DateTime);
    ff.Direction = ParameterDirection.ReturnValue;
    cmd.Parameters.Add(ff);
    cmd.ExecuteNonQuery();

    Console.WriteLine("aa=" + aa.Value.ToString());
    Console.WriteLine("bb=" + bb.Value.ToString());
    Console.WriteLine("cc=" + cc.Value.ToString());
    Console.WriteLine("dd=" + dd.Value.ToString());
    Console.WriteLine("ee=" + ee.Value.ToString());
    Console.WriteLine("ff=" + ff.Value.ToString());
    return 0;           
}
catch (System.Exception ex)
{
    Console.WriteLine(ex.ToString());
    conn.Close();
    return 0;
}