Verilerimi depolamak için TimesTen DB'yi kullanarak uygulamam. Aşağıda verileri güncellemek ve güncellenmiş bir satır döndürmek kodum.ODP.NET: Verileri dinamik sql'den veri kümesine nasıl alabilirim
conn = new OracleConnection("My Connection");
conn.Open();
OracleTransaction tran = conn.BeginTransaction(IsolationLevel.ReadCommitted);
OracleCommand command = new OracleCommand();
command = new OracleCommand(@"DECLARE idNo NUMBER;
BEGIN
select id into idNo from " + prefix_db + @"tbl_request_in where upper(status)='PENDING' and ROWNUM <= 1 order by priority, id FOR update;
update " + prefix_db + @"tbl_request_in set status ='Processing',begin_time= SYSDATE(),response_node='10.9.70.47'
where upper(status) <> 'PROCESS' and upper(status) <> 'PROCESSING' and upper(status) <> 'OK' and upper(status)<>'ERROR'
and id=idNo;
OPEN :RETURNCURSOR for select * from APITT_tbl_request_in where id=idNo;
END;", conn);
command.Transaction = tran;
command.BindByName = true;
OracleParameter outNumPrm = command.Parameters.Add("RETURNCURSOR", OracleDbType.RefCursor, DBNull.Value, ParameterDirection.ReturnValue);
// create a data adapter to use with the data set
OracleDataAdapter da = new OracleDataAdapter(command);
// create the data set
DataSet ds = new DataSet();
// fill the data set
da.Fill(ds);
ve hata
{Oracle.DataAccess.Client.OracleException ORA-01722 verir: Geçersiz sayıda
Oracle.DataAccess.Client.OracleException.HandleErrorHelper (Int32 de Parametreler errCode, OracleConnection komuta IntPtr opsErrCtx, OpoSqlValCtx * pOpoSqlValCtx, Oracle.DataAccess.Client.OracleException.HandleError (Int32 ERRCODE, OracleConnection baðlant, ıntptr opsErrCtx, Nesne src, Boolean bcheck de Nesne src, dize prosedürü, Boole bcheck) ) System.Data.Common.DataAdapter.FillFromReader de System.Data.Common.DataAdapter.FillLoadDataRow (SchemaMapping eşleme) de Oracle.DataAccess.Client.OracleDataReader.Read() (DataSet veri kümesi, DataTable Datatable String srcTable, DataReaderContainer de Oracle.DataAccess.Client de System.Data.Common.DataAdapter.Fill (DataSet veri kümesi, dize srcTable, IDataReader datareader, ınt32 startRecord, Int32 maxrecords) de datareader, ınt32 startRecord, ınt32 maxrecords, DataColumn parentChapterColumn, parentChapterValue Nesne) .OracleDataAdapter.Fill (DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords) Oracle.DataAccess.Client.OracleDataAdapter.Fill (DataSet veri) Set, Int32 startRecord, Int32 maxrecords, System.Data.Common.DbDataAdapter.Fill de dize srcTable, IDbCommand komutu, CommandBehavior davranış) (DataSet veri kümesi)
Bunu nasıl çözebilirim?
Aynı SQL, kullandığınız SQL araçlarında çalışır mı? –
sql geliştirici aracını kullanıyorum ve sorgu çalışmam tamam –
Parametrenin "ParameterDirection.Output" tür değeri –