Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как из процедуры корректно вернуть нужное значение?  [new]
Nika gnome
Member

Откуда:
Сообщений: 626
EXEC	@return_value = [dbo].[добавить персону]
		@Имя = N'Петька',
		@Вес = 184

SELECT	'Return Value' = @return_value

при запуске в SQL Management studio
мне возвращает сразу два значения (скрин прикреплён)

Create PROCEDURE [добавить персону]
@Имя nvarchar(100),
@Вес bigint

AS
BEGIN
	Insert Into dbo.Лююдиии
        (
	    Имя, Вес)
    values
        (@Имя, @Вес) 
    declare @ResultID int;     
    SELECT @ResultID = SCOPE_IDENTITY();
    Select @ResultID ResultID

если просто выполнить данный запрос, то будет одно число (11772, например).
Если запустить её как процедуру (первый запрос в моём посте), то выдастся то, что на скриншоте.
А если из среды C#, то он почему-то вообще единицу выдаёт. Откуда взялась эта единица? Как мне 11772 получить?
(речь о DataSet в проекте Visual Studio C# 2010)

К сообщению приложен файл. Размер - 5Kb
8 июл 14, 15:48    [16276107]     Ответить | Цитировать Сообщить модератору
 Re: как из процедуры корректно вернуть нужное значение?  [new]
Glory
Member

Откуда:
Сообщений: 104751
1. Уберите Select @ResultID ResultID из процедуры
2. Прочитайте про OUTPUT параметры
3. RETURN - это вовсе не то, что процедура возвращает в качестве результатов
8 июл 14, 15:51    [16276131]     Ответить | Цитировать Сообщить модератору
 Re: как из процедуры корректно вернуть нужное значение?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37155
Nika gnome
Если запустить её как процедуру (первый запрос в моём посте), то выдастся то, что на скриншоте.
"Запустить как процедуру" - это команда exec, а не exec, а потом еще и select.
Nika gnome
Как мне 11772 получить?
Прочитать из рекорсета.
8 июл 14, 15:52    [16276151]     Ответить | Цитировать Сообщить модератору
 Re: как из процедуры корректно вернуть нужное значение?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8350
автор
Как мне 11772 получить


создать объект ридер, выполнить подключение, выполнить строку
"EXEC [dbo].[добавить персону] @Имя = N'Петька, @Вес = 184",
прочитать из ридера.
и не давайте имен на кириллице, если простота сопровождения имеет для Вас значение.
8 июл 14, 16:10    [16276306]     Ответить | Цитировать Сообщить модератору
 Re: как из процедуры корректно вернуть нужное значение?  [new]
Nika gnome
Member

Откуда:
Сообщений: 626
Владислав Колосов
и не давайте имен на кириллице, если простота сопровождения имеет для Вас значение.

про кириллицу согласна, я просто всегда на форуме пишу по-русски, чтобы вопрос проще воспринимался.
8 июл 14, 16:28    [16276425]     Ответить | Цитировать Сообщить модератору
 Re: как из процедуры корректно вернуть нужное значение?  [new]
Nika gnome
Member

Откуда:
Сообщений: 626
Glory
1. Уберите Select @ResultID ResultID из процедуры
2. Прочитайте про OUTPUT параметры
3. RETURN - это вовсе не то, что процедура возвращает в качестве результатов

отлично!
даже читать не стала, сразу поняла, о чём речь и как с этим работать, всё получилось, спасибо))

К сообщению приложен файл. Размер - 4Kb
8 июл 14, 16:35    [16276493]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить