powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Динамический SQL в динамическом SQL-е
2 сообщений из 2, страница 1 из 1
Динамический SQL в динамическом SQL-е
    #32003577
Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В нижеприведенном куске процедуры нужно в динамическом SQL-е
генерировать динамический SQL-е. Можно это или нет в принципе

print 'встретился составной объект. запускаю рекурсию'
set @sql = N'
declare @eid integer
declare @val_id int

declare keys' + ltrim(str(@depth)) + ' cursor for
select e_id
from objs_elems
where o_id = @o_id and oe_key = 1
open keys' + ltrim(str(@depth)) + '
fetch next from keys' + + ltrim(str(@depth)) + ' into @eid
print @eid
while @@fetch_status = 0
begin
select @val_id = e + ltrim(str(@eid)) + '
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
'from Object' + ltrim(str(@o_id)) + ' where o' + ltrim(str(@o_id))+ '=' + ltrim(str(@id)) + '
exec GetObjectCopyName @eid, @val_id, ' + ltrim(str(@depth + 1)) + '
fetch next from keys' + + ltrim(str(@depth)) + ' into @eid
end
close keys' + ltrim(str(@depth)) + '
deallocate keys'+ ltrim(str(@depth))
print @sql
exec sp_executesql @sql,
N'@o_id int',
@o_id
...
Рейтинг: 0 / 0
Динамический SQL в динамическом SQL-е
    #32003585
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вообще такой запрос проходит:
exec('exec(''select top 5 name from sysobjects'')')

так что в принципе можно

Но неужели нельзя это написать по-человечески? Вы сразу используете три вещи, каждую из которых надо стараться избегать по возможности:
- динамический SQL
- курсоры
- рекурсию

Мне тяжело было разбираться в том, что Вы написали(через пару месяцев и Вам тоже будет), но если бы Вы написали что Вам надо, может можно было бы и чего придумать.

С приветом Сергей
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Динамический SQL в динамическом SQL-е
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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