C# Call Oracle Procedure Demo(paras Query)

Procedure
  1. CREATE OR REPLACE PROCEDURE ivan_sptest1 (
  2.    material_no   IN       sd_form_box.material_no%TYPE,
  3.    pallet_id     IN       sd_form_box.pallet_id%TYPE,
  4.    box_id        IN       sd_form_box.box_id%TYPE,
  5.    v_ds1         OUT      sys_refcursor,
  6.    v_ds2         OUT      sys_refcursor
  7. )
  8. IS
  9.    sql1   VARCHAR2 (1000) := NULL;
  10.    sql2   VARCHAR2 (1000) := NULL;
  11. BEGIN
  12.    sql1 := 'SELECT * FROM SD_FORM_BOX WHERE 1=1';
  13.    IF (material_no IS NOT NULL)
  14.    THEN
  15.       sql1 := sql1 || ' AND MATERIAL_NO=' || '''' || material_no || '''';
  16.    END IF;
  17.    IF (pallet_id IS NOT NULL)
  18.    THEN
  19.       sql1 := sql1 || ' AND PALLET_ID=' || '''' || pallet_id || '''';
  20.    END IF;
  21.    IF (box_id IS NOT NULL)
  22.    THEN
  23.       sql1 := sql1 || ' AND BOX_ID=' || '''' || box_id || '''';
  24.    END IF;
  25.    OPEN v_ds1 FOR sql1;
  26.    sql2 := 'SELECT * FROM SD_FORM_PALLET';
  27.    OPEN v_ds2 FOR sql2;
  28. EXCEPTION
  29.    WHEN NO_DATA_FOUND
  30.    THEN
  31.       NULL;
  32.    WHEN OTHERS
  33.    THEN
  34.       -- Consider logging the error and then re-raise
  35.       RAISE;
  36. END ivan_sptest1;

C#

  1.  string connstr = "Data Source=test;uid=cc;password=ccc";
  2.             DataSet ds = null;
  3.             using (OracleConnection conn = new OracleConnection(connstr))
  4.             {
  5.                 try
  6.                 {
  7.                     conn.Open();
  8.                     OracleCommand cmd = new OracleCommand();
  9.                     cmd.CommandType = CommandType.StoredProcedure;
  10.                     cmd.Connection = conn;
  11.                     cmd.CommandText = "IVAN_SPTEST1";
  12.                     
  13.                     OracleParameter para = new OracleParameter("V_DS1", OracleType.Cursor);
  14.                     para.Direction = ParameterDirection.Output;
  15.                     cmd.Parameters.Add(para);
  16.                     para = new OracleParameter("V_DS2",OracleType.Cursor);
  17.                     para.Direction = ParameterDirection.Output;
  18.                     cmd.Parameters.Add(para);
  19.                     para = new OracleParameter("material_no",OracleType.VarChar);
  20.                     para.Value = txtmaterial.Text;
  21.                     para.Direction = ParameterDirection.Input;
  22.                     cmd.Parameters.Add(para);
  23.                     para = new OracleParameter("pallet_id", OracleType.VarChar);
  24.                     para.Value = txtpallet.Text;
  25.                     para.Direction = ParameterDirection.Input;
  26.                     cmd.Parameters.Add(para);
  27.                     para = new OracleParameter("box_id", OracleType.VarChar);
  28.                     para.Value = txtbox.Text;
  29.                     para.Direction = ParameterDirection.Input;
  30.                     cmd.Parameters.Add(para);
  31.                     OracleDataAdapter ada = new OracleDataAdapter(cmd);
  32.                     ds = new DataSet();
  33.                     ada.Fill(ds);
  34.                 }
  35.                 catch (Exception ex)
  36.                 {
  37.                 }
  38.                 finally
  39.                 {
  40.                     conn.Close();
  41.                 }
  42.             }
  43.             this.dataGridView1.AutoGenerateColumns = true;
  44.             this.dataGridView1.DataSource = ds.Tables[0];
  45.             this.dataGridView2.AutoGenerateColumns = true;
  46.             this.dataGridView2.DataSource = ds.Tables[1];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值