получить номер автономера в sqldatasource после операции вставки - PullRequest
0 голосов
/ 16 июня 2011

В моем приложении asp.net я хочу использовать подробный вид для отображения / вставки / обновления данных в БД.

После прочтения документов:

http://msdn.microsoft.com/en-us/library/fkzs2t3h%28v=VS.85%29

Это хорошо работает в sqlserver, но когда я использую oracle с использованием провайдера "oledb", возникает ошибка (я заменил названный параметр, например, '@xxx' на '?').

Похоже, что ошибка вызвана этой командой:

InsertCommand="INSERT INTO Employees(LastName, FirstName) VALUES (@LastName, @FirstName); 
                         SELECT @EmpID = SCOPE_IDENTITY()"

Команда сначала вставляет новые данные в базу данных, а затем извлекает «автонумерацию».

В oracle он не работает, поэтому я исправляю это так:

InsertCommand="INSERT INTO Employees(LastName, FirstName) VALUES (@LastName, @FirstName); 
                         SELECT @EmpID = seq_employees.currval() from dual"

Но все равно не работает.

Есть идеи?

1 Ответ

2 голосов
/ 16 июня 2011

См. Этот вопрос:

Наилучшие практики: .NET: Как вернуть PK для базы данных Oracle?

По сути, вы используете клавишу RETURNING INTO param,и установите выходной параметр для параметра.

...