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

Откуда:
Сообщений: 64
Дорый день!

Такая проблема: мне необходимо в селекте вызвать функцию, в которую передать три параметра. Из этих трех параметров динамически сформировать новый SELECT, который отберет одно значение и вернет в первый селект :) Такое возможно? :)
7 июн 11, 10:45    [10774941]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос возвращающий одно значение  [new]
Glory
Member

Откуда:
Сообщений: 104751
В функциях запрещены динамические запросы
7 июн 11, 10:46    [10774947]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос возвращающий одно значение  [new]
slivka_83
Member

Откуда:
Сообщений: 64
Glory
В функциях запрещены динамические запросы

Я уже это заметил :) потому и пишу сюда... может есть какие-то воркэраунды... :)
7 июн 11, 10:48    [10774955]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос возвращающий одно значение  [new]
Glory
Member

Откуда:
Сообщений: 104751
slivka_83
Glory
В функциях запрещены динамические запросы

Я уже это заметил :) потому и пишу сюда... может есть какие-то воркэраунды... :)

В хелпе ясно и однозначно сказано - динамические запросы специально запрещены разработчиками, а не потому, что так получилось. Поэтому никаких "лючков" нет и не будет
7 июн 11, 10:56    [10775015]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос возвращающий одно значение  [new]
Гадя Петрович
Member

Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
Сообщений: 52912
Glory,

можно, кстати, ссыль на этот хелп?
не могу найти
7 июн 11, 11:01    [10775058]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос возвращающий одно значение  [new]
slivka_83
Member

Откуда:
Сообщений: 64
Glory,

Я поппытался сделать этого через курсор и процедуру. Т.е. весь первый селект засунул во временную таблицу. Эту временную таблицу просматриваю построчно в курсоре. Затем для каждой строки вызываю процедуру с передачей ей трех параметров:

DECLARE @curValue varchar(500)
EXECUTE @curValue = curValue @Object, @Field, @Id

После чего обновляю текущую строчку во временной таблице...
UPDATE #tlog
SET newValue = @curValue
WHERE RecordId = @Id

Одна проблема... на каждый EXECUTE в студии отдельный результат :) можно хоть это как то обойти? :)
7 июн 11, 11:02    [10775068]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос возвращающий одно значение  [new]
Glory
Member

Откуда:
Сообщений: 104751
slivka_83

Одна проблема... на каждый EXECUTE в студии отдельный результат :) можно хоть это как то обойти? :)

Написать процедуру так, чтобы она выдавала только нужные вам результаты
И не надо возвращать из процедуры значения через RETURN
7 июн 11, 11:04    [10775089]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос возвращающий одно значение  [new]
slivka_83
Member

Откуда:
Сообщений: 64
Glory
slivka_83
Одна проблема... на каждый EXECUTE в студии отдельный результат :) можно хоть это как то обойти? :)

Написать процедуру так, чтобы она выдавала только нужные вам результаты
И не надо возвращать из процедуры значения через RETURN


Спасибо за помощь :) Процедура вытаскивает то что мне нужно и RETURN в ней не используется:

ALTER PROCEDURE [dbo].[curValue]
@Table VARCHAR(100),
@Field VARCHAR(100),
@RecordId VARCHAR(100)
AS
BEGIN
DECLARE @req VARCHAR(8000) = 'SELECT ' + @Field + ' FROM ' + @Table + ' WHERE ' + @Table + 'id = ''' + @RecordId + ''''
EXEC (@req)
END

но все равно каждый EXECUTE выдает отдельный результат :)
7 июн 11, 11:07    [10775118]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос возвращающий одно значение  [new]
Glory
Member

Откуда:
Сообщений: 104751
slivka_83

но все равно каждый EXECUTE выдает отдельный результат :)

А что вы хотели, чтобы было результатом SELECT-а в вашей процедуре ?
Вы для чего его там написали ?

slivka_83
и RETURN в ней не используется:

Еще круче
А что вы тогда получаете в EXECUTE @curValue = curValue ?
7 июн 11, 11:11    [10775151]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос возвращающий одно значение  [new]
slivka_83
Member

Откуда:
Сообщений: 64
Glory
slivka_83
но все равно каждый EXECUTE выдает отдельный результат :)

А что вы хотели, чтобы было результатом SELECT-а в вашей процедуре ?
Вы для чего его там написали?

Результатом мне нужно значение одного поля, которое и вытаскивает селект в процедуре. Его мне нужно вернуть в то место откуда процедура вызвана :)
Glory
slivka_83
и RETURN в ней не используется:

Еще круче
А что вы тогда получаете в EXECUTE @curValue = curValue ?


Извините, но боюсь что я не понимаю что Вы имеете ввиду :) Если не использовать EXECUTE, то как обратиться к процедуре? :)
7 июн 11, 11:16    [10775214]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос возвращающий одно значение  [new]
Glory
Member

Откуда:
Сообщений: 104751
slivka_83
Glory
пропущено...

А что вы хотели, чтобы было результатом SELECT-а в вашей процедуре ?
Вы для чего его там написали?

Результатом мне нужно значение одного поля, которое и вытаскивает селект в процедуре. Его мне нужно вернуть в то место откуда процедура вызвана :)


Ваш select выдает результат клиенту. Который вы и видите на экране.
Больше он никуда ничего не возвращает

slivka_83
Извините, но боюсь что я не понимаю что Вы имеете ввиду :) Если не использовать EXECUTE, то как обратиться к процедуре? :)

Наверное для начала неплохо бы ознакомится в хелпе с командой EXECUTE

Сообщение было отредактировано: 7 июн 11, 11:22
7 июн 11, 11:22    [10775271]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить