|
Динамический SQL в динамическом SQL-е
|
|||
---|---|---|---|
#18+
В нижеприведенном куске процедуры нужно в динамическом 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2001, 16:16 |
|
Динамический SQL в динамическом SQL-е
|
|||
---|---|---|---|
#18+
Ну вообще такой запрос проходит: exec('exec(''select top 5 name from sysobjects'')') так что в принципе можно Но неужели нельзя это написать по-человечески? Вы сразу используете три вещи, каждую из которых надо стараться избегать по возможности: - динамический SQL - курсоры - рекурсию Мне тяжело было разбираться в том, что Вы написали(через пару месяцев и Вам тоже будет), но если бы Вы написали что Вам надо, может можно было бы и чего придумать. С приветом Сергей ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2001, 17:33 |
|
|
start [/forum/topic.php?fid=46&msg=32003577&tid=1827123]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
301ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 275ms |
total: | 670ms |
0 / 0 |