powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как считать возвращаемые значения output
25 сообщений из 32, страница 1 из 2
Как считать возвращаемые значения output
    #39159548
zalsily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Никак не могу понять в какой способ из C# ADO.NET можно получить значения уникального автоинкрементирующего поля для вновь добавленных строк.

Вот код для вставки в базу данных нескольких строк:

Код: sql
1.
2.
3.
4.
5.
DECLARE @MyTableVar table(outid lint, outname varchar(100));
INSERT Production.name, Production.createddate
OUTPUT INSERTED.outid, INSERTED.outname INTO @MyTableVar
VALUES ('Первая запись', GETDATE()), ('Вторая запись', GETDATE()), ('Третья запись', GETDATE());
SELECT * FROM @MyTableVar;



Но как вызвать данный код на исполнение через ASP.NET SqlDataReader?

Поделитесь рабочим примером, пожалуйста.
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39159551
T87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zalsilyДобрый день.

Никак не могу понять в какой способ из C# ADO.NET можно получить значения уникального автоинкрементирующего поля для вновь добавленных строк.

Вот код для вставки в базу данных нескольких строк:

Код: sql
1.
2.
3.
4.
5.
DECLARE @MyTableVar table(outid lint, outname varchar(100));
INSERT Production.name, Production.createddate
OUTPUT INSERTED.outid, INSERTED.outname INTO @MyTableVar
VALUES ('Первая запись', GETDATE()), ('Вторая запись', GETDATE()), ('Третья запись', GETDATE());
SELECT * FROM @MyTableVar;



Но как вызвать данный код на исполнение через ASP.NET SqlDataReader?

Поделитесь рабочим примером, пожалуйста.
Передать параметр также как и инпут, только тип ему задать аутпут.
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39159552
zalsily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, но этот параметр должен содержать не одно конкретное значение, а целый набор записей (с полями).

Пытаюсь и та, и сяк и никак не сработает, постоянно ошибки при исполнении вываливаются.
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39159565
zalsily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну не понятно как я могу "распарсить" оутпут параметр и вытянуть из него значения полей набора строк. Нигде не могу найти как такое реализовывается, только есть примеры с оутпут параметром типа varchar,int, bit. А вот типа table нет нигде.
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39159615
T87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zalsily,

Давайте по порядку. Почему у вас вставляется сразу несколько записей? Откуда они приходят? Из вашего приложения?
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160019
zalsily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, с приложения приходит список List<UserType> manyrows;
Каждый элемент списка представляет собой объект с полями, значения которых должны быть перенесены в бд.

Так, 10 элементов списка должны стать 10 записями в таблице.

Множественную вставку выполнить через инструкции ADO.NET (C#) не есть проблема, и не есть проблема получить скоупидентити id последней вставленной записи, но в данном случае надо получить id всех вставленных записей (и желательно еще и значения нескольких других полей записей).
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160055
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zalsily, msdn
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160086
zalsily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Axeleron, простите, но чет не понял как это помогает решить вопрос. Возможно просто не догоняю, но пока не могу понять. Меня больше интересует сам механизм получения набора строк из аутпут параметра.
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160089
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zalsilyAxeleron, простите, но чет не понял как это помогает решить вопрос. Возможно просто не догоняю, но пока не могу понять. Меня больше интересует сам механизм получения набора строк из аутпут параметра.
Какой набор строк в output параметрах? Накой тогда ридер нужен?
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160096
zalsily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Axeleron, а как вообще получить на выходе перечень id-шек новых записей?
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160102
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zalsilyAxeleron, а как вообще получить на выходе перечень id-шек новых записей?
А нужны id всех новых записей? А зачем?
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160105
zalsily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вариант новым запросом считать строки, которые были добавлены по определенному параметру не проходит так как одновременнно в базу могут писаться несколько таких наборов вставляемых записей. Поэтому отследить и получить значения поля id вставленных строк можно непосредственно вовремя их вставки. Другого пути в данном случае нет.

Ну можно попробовать создать дополнительную таблицу в бд для хранения этой информации. Но мне кажется это уж слишком грабельно.
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160121
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronzalsilyAxeleron, а как вообще получить на выходе перечень id-шек новых записей?
А нужны id всех новых записей? А зачем?
Ок, предположим, что реально надо. Тогда курсором делать в ХП и по одной записи вставлять и получать ID, запихивать во временную таблицу, а потом возвращать список ID'шек и читать DataReader'ом.
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160135
zalsily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Axeleron, ну вот, анверное, в этом направлении и придется реализовывать.
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160143
zalsily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160147
zalsily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160258
VAlexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zalsilyпостоянно ошибки при исполнении вываливаются

Может быть текст ошибки приведете? Что за тип колонки такой lint в Вашем скрипте? В SQL Server такого нет.
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160272
zalsily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VAlexey,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DECLARE @AddedRows table(productid int); 
INSERT  (Product.marketid, Product.createdate, Product.name) 
   INTO Products 
		
	OUTPUT INSERTED.id INTO @AddedRows 

VALUES 
	(1359, 01.02.2016 13:34:45, 'Товар №134655849'), 
	(1312, 01.02.2016 13:34:45, 'Товар №251352345')
	(1304, 01.02.2016 13:34:45, 'Товар №323459901'), 
	(1702, 01.02.2016 13:34:45, 'Товар №842573357'); 


SELECT * FROM @AddedRows;



Error Mesage: Incorrect syntax near '('
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160285
zalsily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
* в скрипте запятая на второй строке имеется, просто некорректно перенес в форум
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160286
VAlexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) Пропущена запятая между значениями в предложении VALUES
2) Значения дат надо передавать в правильном формате (и при том в лучше независящем от текущего формата дат пользователя: например, ODBC формат либо '20160201 13:34:45')
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160292
zalsily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VAlexey, убрал поле даты, запятая есть. Ошибка также осталась.
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160293
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VAlexey1) Пропущена запятая между значениями в предложении VALUES
2) Значения дат надо передавать в правильном формате (и при том в лучше независящем от текущего формата дат пользователя: например, ODBC формат либо '20160201 13:34:45')
+1, и еще Product.name должен быть NVARCHAR
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160299
zalsily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Axeleron, так в определении этого поля указан тип nvarchar.

Или что еще в скрипте надо указать?
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160301
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zalsily,
N 'Товар №134655849'
...
Рейтинг: 0 / 0
Как считать возвращаемые значения output
    #39160303
zalsily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Axeleron, не помогло. Та же ошибка.

Возможно сам скрипт кривой?
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как считать возвращаемые значения output
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]