powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / sp_executesql в CTE
13 сообщений из 13, страница 1 из 1
sp_executesql в CTE
    #40069867
Julia2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Подскажите, пожалуйста, как выполнить с помощью sp_executesql содержимое поля sqlt? Только курсор? CTE невозможно?
Код: sql
1.
2.
3.
create table #st(id int identity, sqlt nvarchar(max))
insert into #st (sqlt)
	values (N'select * from t1'), (N'select * from t2')



Спасибо!
...
Рейтинг: 0 / 0
sp_executesql в CTE
    #40069869
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Julia2000
Здравствуйте.
Подскажите, пожалуйста, как выполнить с помощью sp_executesql содержимое поля sqlt? Только курсор? CTE невозможно?
Код: sql
1.
2.
3.
create table #st(id int identity, sqlt nvarchar(max))
insert into #st (sqlt)
	values (N'select * from t1'), (N'select * from t2')




Спасибо!




Если ваши запросы однотипны (одинаковый набор полей), и вам нужно получить их объединенный результат, то можно собрать из в одну строку с "union all" между ними и выполнить одним sp_executesql

CTE тут точно не поможет.
...
Рейтинг: 0 / 0
sp_executesql в CTE
    #40069874
Julia2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex,
Спасибо.
Но там будут динамические запросы и разнотипные, разное количество полей.
...
Рейтинг: 0 / 0
sp_executesql в CTE
    #40069876
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Julia2000
msLex,
Спасибо.
Но там будут динамические запросы и разнотипные, разное количество полей.

а что в итоге вы хотите получить, выполнив их одним запросом ?
...
Рейтинг: 0 / 0
sp_executesql в CTE
    #40069877
Julia2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думала из CTE вызывать функцию, а в функцию передавать поле sqlt, но ((

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
alter function dbo.tt(@i nvarchar(max))
returns nvarchar(max)
as
begin
execute sp_executesql @i
return null
end;

go

declare @x nvarchar(max)

set @x = N'select 1'

execute sp_executesql @x
select dbo.tt(@x)


Код: plaintext
1.
2.
Сообщение 557, уровень 16, состояние 2, строка 55
Внутри функции можно вызывать только функции и некоторые расширенные хранимые процедуры.

Остается только курсор?
...
Рейтинг: 0 / 0
sp_executesql в CTE
    #40069878
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Julia2000
Думала из CTE вызывать функцию, а в функцию передавать поле sqlt, но ((

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
alter function dbo.tt(@i nvarchar(max))
returns nvarchar(max)
as
begin
execute sp_executesql @i
return null
end;

go

declare @x nvarchar(max)

set @x = N'select 1'

execute sp_executesql @x
select dbo.tt(@x)



Код: plaintext
1.
2.
Сообщение 557, уровень 16, состояние 2, строка 55
Внутри функции можно вызывать только функции и некоторые расширенные хранимые процедуры.
Остается только курсор?


еще раз,
предположим в функции можно было бы вызывать sp_executesql, т.е. функция возвращала бы разные по составу полей наборы данных.
как вы собирались с ними работать в одном запросе?


какова конечная цель выполнения всех этих запросов?
...
Рейтинг: 0 / 0
sp_executesql в CTE
    #40069879
Julia2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex,
В таблице будет храниться что-то в виде шаблона, а по необходимости из этих шаблонов формироваться окончательные запросы, потом по очереди они должны выполниться. В следующий раз на основании шаблонов сформируются другие запросы...
...
Рейтинг: 0 / 0
sp_executesql в CTE
    #40069880
Julia2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex,
Много разнообразных запросов хранятся в таблице. Их нужно выполнить...
Я могу это сделать с помощью курсора, это не проблема. Но, подумала, а вдруг можно сделать с помощью CTE или иного подобного способа.
...
Рейтинг: 0 / 0
sp_executesql в CTE
    #40069882
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Julia2000
msLex,
Много разнообразных запросов хранятся в таблице. Их нужно выполнить...
Я могу это сделать с помощью курсора, это не проблема. Но, подумала, а вдруг можно сделать с помощью CTE или иного подобного способа.

эти запросы возвращают данные?
...
Рейтинг: 0 / 0
sp_executesql в CTE
    #40069885
Julia2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex
Julia2000
msLex,
Много разнообразных запросов хранятся в таблице. Их нужно выполнить...
Я могу это сделать с помощью курсора, это не проблема. Но, подумала, а вдруг можно сделать с помощью CTE или иного подобного способа.

эти запросы возвращают данные?


Нет.
...
Рейтинг: 0 / 0
sp_executesql в CTE
    #40069886
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Julia2000
msLex
пропущено...

эти запросы возвращают данные?


Нет.


ну тогда просто соберите их в одну строку и выполните за 1 раз
...
Рейтинг: 0 / 0
sp_executesql в CTE
    #40069929
Julia2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex
Julia2000
пропущено...


Нет.


ну тогда просто соберите их в одну строку и выполните за 1 раз

Спасибо. Наверное, вы правы! )

Но, если отвлечься от моей задачи, если, например, запросы будут что-то возвращать. Например, то что потом преобразовать в XML...
То есть вообще, возможно такое?
...
Рейтинг: 0 / 0
sp_executesql в CTE
    #40070005
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Julia2000,

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


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