powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить значение??
10 сообщений из 10, страница 1 из 1
Как получить значение??
    #32016159
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Есть sp, которая генерит динамический запрос. В итоге он содержиться в @a+@b+@c.
Выполняю его: exec (@a+@b+@c), все нормально. Запрос вида 'select sum(summary) from ...'
Как бы получить это значение в переменную @sum? Что-то вроде такого:
select @sum= exec (@a+@b+@c)??
Конструкция вида exec @sum=sp_executesql @query
не проходит. Ругается на типы text/nchar/...и т.д.
...
Рейтинг: 0 / 0
Как получить значение??
    #32016161
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
declare @sumpays float
set @sumpays = 0
print @sumpays
exec sp_executesql N'set @mysum = @mysum + 1', N'@mysum float out', @mysum = @sumpays out
print @sumpays
...
Рейтинг: 0 / 0
Как получить значение??
    #32016186
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал все в точности - пишет:
Server: Msg 137, Level 15, State 1, Line 1
Must declare the variable '@mysum'.
?????
...
Рейтинг: 0 / 0
Как получить значение??
    #32016187
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит не "все в точности"
У меня пишет:
0
1
...
Рейтинг: 0 / 0
Как получить значение??
    #32016188
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В точности - имею ввиду уже адаптированный вариант к своей задаче. В принципе все совпадает за исключением имен переменных и текста самого запроса. В чем же может быть дело??

declare @sum float
select @sum=0
exec sp_executesql N'select @mysum=0', N'select @mysum=sum(summary) ..., N'@mysum out', @mysum = @sum out
...
Рейтинг: 0 / 0
Как получить значение??
    #32016189
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
declare @sum float
select @sum=0
exec sp_executesql N'select @mysum=0 select @mysum=sum(summary) ...,', N'@mysum float out', @mysum = @sum out
...
Рейтинг: 0 / 0
Как получить значение??
    #32016190
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
declare @sum float
select @sum=0
exec sp_executesql N'select @mysum=0 select @mysum=sum(summary) ...', N'@mysum float out', @mysum = @sum out


PS
Тип данных для своего примера я выбрал совершенно случайно
...
Рейтинг: 0 / 0
Как получить значение??
    #32016192
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! С этим разобрался, ошибочка вкралась :о)!
А вот так все равно не хочет выполняться (@str - текст запроса)

exec sp_executesql N@str, N'@mysum float out', @mysum = @sum out

Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'N@str'.
...
Рейтинг: 0 / 0
Как получить значение??
    #32016194
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все дело в особенностях sp_executesql - данная процедура принимает либо строковые константы, либо переменные. Так вот N'blah-blah' - это как раз строковая константа, а для переменных ничего впереди не надо подставлять

exec sp_executesql @str, N'@mysum float out', @mysum = @sum out

а вот код
exec sp_executesql 'set @mysum = @mysum + 1', '@mysum float out', @mysum = @sumpays out то же вызовет ошибку


"...must be either a Unicode constant or a variable that can be implicitly converted to ntext. More complex Unicode expressions (such as concatenating two strings with the + operator) are not allowed. Character constants are not allowed. If a constant is specified, it must be prefixed with an N. For example, the Unicode constant N'sp_who' is legal, but the character constant 'sp_who' is not. "
...
Рейтинг: 0 / 0
Как получить значение??
    #32016206
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Glory.
Большое спасибо!! Ваши советы очень помогли.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить значение??
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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