ORA-00900: 在使用DataSet填充DataAdapter时出现无效的SQL语句。C# ASP.net

3
我正在使用 VS'12 ASP.net 4.5 和 oracle 10.2.0.1。以下是我的代码,异常就出现在这里。
Agreement agreement = null;

            using (OracleConnection MyConn = new BaseRepository().GetConnection())
            {

                MyConn.Open();
                OracleCommand commOracle = new OracleCommand("PACKAGE_AGREEMENT.USP_GET_AGREEMENT_BY_ID", MyConn);


                VendorRepository vendorRepository = new VendorRepository();

                commOracle.Parameters.Add("SP_AGREEMENT_ID", OracleDbType.Int32, Agreementid, System.Data.ParameterDirection.Input);
                commOracle.Parameters.Add("SP_CUR_AGREEMENT", OracleDbType.RefCursor, ParameterDirection.Output);

                OracleDataAdapter daOracle = new OracleDataAdapter(commOracle);
                DataSet dsOracle = new DataSet();

                daOracle.Fill(dsOracle);//Here the exception arises.


                if (dsOracle.Tables[0].Rows[0] != null)
                {
                    DataRow row = dsOracle.Tables[0].Rows[0];
                    agreement = new Agreement();

                    agreement.pkAgreementId = Convert.ToInt32(row["pkAgreementId"]);
                    agreement.Vendor = vendorRepository.GetById(Convert.ToInt32(row["fkVendorId"]));
                    agreement.IsActive = row["IsActive"].ToString() == "N" ? false : true;
                    agreement.IsDeleted = row["IsDeleted"].ToString() == "N" ? false : true;
                    agreement.RentalAmount = Convert.ToInt32(row["RentalAmount"]);
                    agreement.VehicleCost = Convert.ToInt32(row["VehicleCost"]);
                    agreement.DateOfAgreement = Convert.ToDateTime(row["DateOfAgreement"]);
                    agreement.DateCreated = Convert.ToDateTime(row["DateCreated"]);
                    agreement.DateModified = Convert.ToDateTime(row["DateModified"]);

                }
            }

我包裹的PACKAGE_AGREEMENT规范:

create or replace PACKAGE PACKAGE_AGREEMENT AS TYPE REF_CURSOR IS REF CURSOR; PROCEDURE USP_GET_AGREEMENT_BY_ID(SP_AGREEMENT_ID IN NUMBER, SP_CUR_AGREEMENT OUT REF_CURSOR);  END PACKAGE_AGREEMENT;

包体:

create or replace PACKAGE BODY PACKAGE_AGREEMENT AS PROCEDURE USP_GET_AGREEMENT_BY_ID(SP_AGREEMENT_ID IN NUMBER, SP_CUR_AGREEMENT OUT REF_CURSOR) IS BEGIN OPEN SP_CUR_AGREEMENT FOR SELECT "Agreement".*, ora_rowscn as TimeStamp FROM "Agreement" WHERE "pkAgreementId" = SP_AGREEMENT_ID AND "IsDeleted" = 'N'; END USP_GET_AGREEMENT_BY_ID; END PACKAGE_AGREEMENT;

现在,如果我在Visual Studio(数据连接)中运行该软件包,它会编译而无错误和警告。我不知道问题出在哪里。

请帮忙解决问题。

提前感谢您的帮助。

1个回答

1
你在执行前是否先设置了命令类型?

我应该怎么做呢?请具体说明。 :) - Khurram Zulfiqar Ali
我只是忘记定义我的命令类型。commOracle.CommandType = CommandType.StoredProcedure; - Khurram Zulfiqar Ali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接