Я хочу, чтобы получить значение, чтобы вставить таблицу в C#, что-то вроде этого:Oracle 12C: Возвращает запись после вставки значения
begin
insert into bk_library(floor,section) values('foo2','bar')
returning id into :outid;
select *from bk_library where id=:outid;
end;
К сожалению, мне не удалось
информация об ошибке: Поцелуй .Linq.Linq2Sql.Test.EntryPoint.TestInsertReturnId: Oracle.DataAccess.Client.OracleException: ОР-06550: строка 3, столбец 1: PLS-00428: Ап в предложении, как ожидается, в этом ЗЕЬЕСТЕ
[Test] public void TestInsertReturnId() { int ret = 0; string connstring = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=pdborcl)));User Id=system;Password=****;"; string sql = @"insert into bk_library(floor,section) values('foo','bar') returning id into :outid"; sql = getSqlString(); using (DbConnection conn = new OracleConnection(connstring)) { conn.Open(); DbCommand command = conn.CreateCommand(); command.CommandType = CommandType.Text; command.CommandText = sql; OracleParameter lastId = new OracleParameter(":outid", OracleDbType.Int32); lastId.Direction = ParameterDirection.Output; command.Parameters.Add(lastId); ret = command.ExecuteNonQuery(); // this code work fine ,now I want to get the entire record LogManager.GetLogger<EntryPoint>().Info("The new id ={0}", lastId.Value.ToString()); conn.Close(); } Assert.AreNotEqual(ret, 0); }
Что вы действительно пытаетесь сделать? Вы только что создали «строку» в базе данных, и у вас уже есть данные, зачем их снова получать? Возможно, посмотрите на Entity Framework или LinqToSql? – flindeberg
В этом случае основной столбец таблицы является идентификатором (http://www.oracle-base.com/articles/12c/identity-columns-in-oracle-12cr1.php), когда вставляйте значение, которое я не знаю id, теперь я хочу получить всю запись. – Aliceljm
Да, но вы возвращаете идентификатор из запроса, зачем вам нужна вся запись? А так как вы не используете какие-либо рамки моделирования? – flindeberg