0

我编写了将数据插入数据库表的存储过程,但我不知道如何将数据表传递给存储过程,请告诉如何使用它。

下面是我的存储过程

CREATE OR REPLACE PROCEDURE PR_SREE_TEST(p_recordset In SYS_REFCURSOR) IS

Contrac_rc SREE_TEST%rowtype;
BEGIN

   Loop
   Fetch p_recordset Into Contrac_rc;
   EXIT WHEN p_recordset%NOTFOUND;
       Insert into SREE_TEST(CT,DESC,FLAG)
       Values(Contrac_rc.CT,Contrac_rc.DESC,Contrac_rc.FLAG);

   End Loop;


   EXCEPTION
     WHEN NO_DATA_FOUND THEN
       NULL;
     WHEN OTHERS THEN
       -- Consider logging the error and then re-raise
       RAISE;
END PR_SREE_TEST;
/

和cs页面

  public DataSet sreetest(DataTable dt)
        {
            DataSet dsRegularIndentdtl = new DataSet();
            try
            {
                OracleConnection OraConn = new OracleConnection(strDBConnection);
                OraConn.Open();

                OracleCommand OraCmd = new OracleCommand();
                OraCmd.Connection = OraConn;
                OraCmd.CommandText = "PR_SREE_TEST";
                OraCmd.CommandType = CommandType.StoredProcedure;
                OracleParameter parameter = new OracleParameter();


                var recordSet1 = new DataTable();
                recordSet1 = dt;
               OraCmd.Parameters.Add("p_recordset", OracleDbType.RefCursor, recordSet1, ParameterDirection.Input);
                 OraCmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return dsRegularIndentdtl;
        }
    }

以上是我的代码,它说 p_recordset 无效。请告诉我如何执行它。

4

1 回答 1

0

确保您使用的是正确的 OraCmd.Parameters.Add() 重载,

根据msdn,第四个参数不是参数方向,如下

public OracleParameter Add(
    string parameterName,
    OracleType dataType,
    int size,
    string srcColumn
)
于 2012-08-19T08:15:57.097 回答