以下是.net调用过程部分strConn = ConfigurationSettings.AppSettings["ConnStr"];
conn = new OleDbConnection(strConn);
conn.Open(); cmd = new OleDbCommand("pkg_web_manager.bar_transfers_details",conn);
cmd.CommandType = CommandType.StoredProcedure; paraUserLoginID = new OleDbParameter("i_user_loginid",OleDbType.VarChar,30);
paraUserLoginID.Value = strUserLoginID;
cmd.Parameters.Add(paraUserLoginID); paraUserPwd = new OleDbParameter("i_user_loginpass",OleDbType.VarChar,30);
paraUserPwd.Value = strUserPwd;
cmd.Parameters.Add(paraUserPwd);cmd.ExecuteNonQuery();
decTransAmount = paraTransAmount.Value.ToString();
strFlag = paraFlag.Value.ToString();
cmd.Parameters.Clear();
conn.Close();

解决方案 »

  1.   

    谢谢nicholaz(九思·逢尤)!
    不过我更加需要的是相应的Oracle存储过程。
      

  2.   

    存储过程都一样啊,你在.net里调用过程填充dataset就是了
      

  3.   

    private OleDbDataAdapter da = null;
    public System.Data.DataTable dt = null;

                                         da = new OleDbDataAdapter();
    da.SelectCommand = cmd; dt = new DataTable("dttable");
    da.Fill(dt);
    conn.Close();这样你就可以将结果集填充到DataTable中了
      

  4.   

    .net部分我基本都知道了。不过就是Oracle存储过程的编写有点问题。我写了一段:
    CREATE OR REPLACE PACKAGE pkg_queryrmex
    AS
       TYPE myrctype IS REF CURSOR;
       PROCEDURE get(iv_STCD in char, iv_dtBegin in date, iv_dtEnd in date, ov_rc OUT myrctype);
    END pkg_queryrmex;
    /CREATE OR REPLACE PACKAGE BODY pkg_queryrmex
    AS
       PROCEDURE get(iv_STCD in char, iv_dtBegin in date, iv_dtEnd in date, ov_rc OUT myrctype)
       IS
          strSQL   VARCHAR2 (1000);
       BEGIN
      strSQL := 'select * from st_rmex_r where stcd='||iv_STCD||' and YMDHM>='||iv_dtBegin||' and YMDHM<='||iv_dtEnd;
      open ov_rc for strSQL;
       END get;
    END pkg_queryrmex;
    然后在.Net里面调用:
    DateTime dtBegin = new DateTime(Convert.ToInt32(tbBeginYear.Text),
    Convert.ToInt32(tbBeginMonth.Text),
    Convert.ToInt32(tbBeginDay.Text), 0, 0, 0, 0);
    DateTime dtEnd = new DateTime(Convert.ToInt32(tbEndYear.Text),
      Convert.ToInt32(tbEndMonth.Text),
      Convert.ToInt32(tbEndDay.Text), 23, 59, 59, 0);
    //Procedure
    OracleCommand cmd = new OracleCommand("pkg_queryrmex.get", connOracleTest);
    cmd.CommandType = CommandType.StoredProcedure;
    //Parametes
    //iv_STCD
    OracleParameter parSTCD = new OracleParameter("iv_STCD", OracleType.Char);
    parSTCD.Direction = ParameterDirection.Input;
    parSTCD.Value = tbSTCD.Text;
    cmd.Parameters.Add(parSTCD);
    //iv_dtBegin
    OracleParameter pardtBegin = new OracleParameter("iv_dtBegin", OracleType.DateTime);
    pardtBegin.Direction = ParameterDirection.Input;
    pardtBegin.Value = new OracleDateTime(dtBegin);
    cmd.Parameters.Add(pardtBegin);
    //iv_dtEnd
    OracleParameter pardtEnd = new OracleParameter("iv_dtEnd", OracleType.DateTime);
    pardtEnd.Direction = ParameterDirection.Input;
    pardtEnd.Value = new OracleDateTime(dtEnd);
    cmd.Parameters.Add(pardtEnd);
    OracleParameter parRC = new OracleParameter("ov_rc", OracleType.Cursor);
    parRC.Direction = ParameterDirection.Output;
    cmd.Parameters.Add(parRC);
    //OracleDataAdapter
    OracleDataAdapter da = new OracleDataAdapter(cmd);
    DataSet ds = new DataSet();
    da.Fill(ds, "ST_RMEX_R");
    dgSYQ.DataSource = ds.Tables["ST_RMEX_R"].DefaultView;
    dgSYQ.DataBind();
    可是老是报错:
    ORA-00933: SQL 命令未正确结束 ORA-06512: 在"WUWEI.PKG_QUERYRMEX", line 8 ORA-06512: 在line 1 
    麻烦帮我看一下。谢谢!
      

  5.   

    strSQL := 'select * from st_rmex_r where stcd='||iv_STCD||' and YMDHM>='||iv_dtBegin||' and YMDHM<='||iv_dtEnd;
      open ov_rc for strSQL;改成:
     open ov_rc for select * from st_rmex_r 
            where stcd=iv_STCD and YMDHM>=iv_dtBegin and YMDHM<=iv_dtEnd;