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

Откуда: Израиль. Хадера.
Сообщений: 198
Есть stored procedure котрая вставляет в три таблицы данные.
В самом конце процедуры я пытаюсь вернуть некий стринг, содержащий вновь добавленные ID каждой таблицы. Выглядит эта строка так:
SELECT @IDs = cast(@HebID AS NvarChar(10)) + '_' + cast(@RusID AS NVarChar(10)) + '_' + cast(@EngID AS NVarChar(10))

Возвращает NULL

Попробовал заменить на вот такую строку:
SELECT @IDs = 'test';
Но все равно возвращается NULL.

В чем моя ошибка? Как ее исправить?

Спасибо!
Евгений Боуден
26 янв 12, 15:41    [11976695]     Ответить | Цитировать Сообщить модератору
 Re: ExecuteScalar не работает  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
@IDs объявлен как выходной параметр?
26 янв 12, 15:43    [11976710]     Ответить | Цитировать Сообщить модератору
 Re: ExecuteScalar не работает  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
evgenybe
Попробовал заменить на вот такую строку:
SELECT @IDs = 'test';
Но все равно возвращается NULL.


это только присвоение
если вам нужно чтоб процедура вернула датасет с @IDs, то нужно еще сделать SELECT @IDs
26 янв 12, 15:45    [11976747]     Ответить | Цитировать Сообщить модератору
 Re: ExecuteScalar не работает  [new]
SergePnb
Member

Откуда: Киев
Сообщений: 456
Пример с использованием OUT параметра
CREATE PROCEDURE #out_test (
 @outParam varchar(10) OUT
)
AS
BEGIN
  SET NOCOUNT ON
  select @outParam = 'Test'
END
GO
declare @Param varchar(10)
exec #out_test @outParam = @Param OUT
select @Param
GO
26 янв 12, 15:51    [11976824]     Ответить | Цитировать Сообщить модератору
 Re: ExecuteScalar не работает  [new]
evgenybe
Member

Откуда: Израиль. Хадера.
Сообщений: 198
Shakill
evgenybe
Попробовал заменить на вот такую строку:
SELECT @IDs = 'test';
Но все равно возвращается NULL.


это только присвоение
если вам нужно чтоб процедура вернула датасет с @IDs, то нужно еще сделать SELECT @IDs


Огромное спасибо! Вот же-ж ёлкин хвост! Я думал, что первый селест это и селест и присвоение одновременно!
Еще раз спасибо!!!
26 янв 12, 17:44    [11978129]     Ответить | Цитировать Сообщить модератору
 Re: ExecuteScalar не работает  [new]
evgenybe
Member

Откуда: Израиль. Хадера.
Сообщений: 198
denis2710,
Спасибо! Уже нашлась ошибка.
26 янв 12, 17:45    [11978137]     Ответить | Цитировать Сообщить модератору
 Re: ExecuteScalar не работает  [new]
evgenybe
Member

Откуда: Израиль. Хадера.
Сообщений: 198
SergePnb
Пример с использованием OUT параметра
CREATE PROCEDURE #out_test (
 @outParam varchar(10) OUT
)
AS
BEGIN
  SET NOCOUNT ON
  select @outParam = 'Test'
END
GO
declare @Param varchar(10)
exec #out_test @outParam = @Param OUT
select @Param
GO

Спасибо! Буду применять!!!
26 янв 12, 17:46    [11978153]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить