powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL 7.0. Как во view использовать набор данных, полученный из хран. процедуры
3 сообщений из 3, страница 1 из 1
MSSQL 7.0. Как во view использовать набор данных, полученный из хран. процедуры
    #32016291
MishGan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть проблема.
Имеем view, которая использует набор данных, возвращенный хранимой процедурой.
Примерно так:
exec sp_serveroption MY_SERVER , 'data access', 'true'
GO
create view v1 as select * from OPENQUERY(MY_SERVER,'exec sp_who') where ....
GO
Недостаток такой конструкции состоит в том, что имя сервера (MY_SERVER) он заранее неизвестно. Хотелось бы, чтобы оно подставлялось динамически. Как-нибудь так:
create view v1 as select * from OPENQUERY(@@SERVERNAME,'exec sp_who') where ....
Но это не прокатывает, т.к. первый параметр для OPENQUERY является строковым выражением.
Вопрос: можно ли как-нибудь разрешить проблему, т.е. прообразовать @@SERVERNAME в вид, который прокатит для OPENQUERY? Или может есть какие-нибудь еще варианты реализовать сабж?
ЗЫ: Можно конечно использовать DSQL (execute, sp_execute, sp_executesql и т.д.) для создания view, но это не приветствуется.
...
Рейтинг: 0 / 0
MSSQL 7.0. Как во view использовать набор данных, полученный из хран. процедуры
    #32016319
Alik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Без DSQL такой вопрос не решается.
Но если в качестве результата использовать не View, а временную таблицу, могу предложить примитивный вариант.
Примитивный, так как необходимо заранее знать все возможные имена серверов
CREATE PROCEDURE spTest
@ServerName AS CHAR( 100)
AS
CASE @ServerName
WHEN 'Name1' THEN SELECT * INTO ##Temp FROM OPENQUERY( Name1, 'EXEC sp_Who')
WHEN 'Name2' THEN SELECT * INTO ##Temp FROM OPENQUERY( Name2, 'EXEC sp_Who')
END
...
Рейтинг: 0 / 0
MSSQL 7.0. Как во view использовать набор данных, полученный из хран. процедуры
    #32016410
Alik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините за ошибку, CASE конечно так не работает.
Правильно будет:
IF @ServerName = 'Name1'
BEGIN
SELECT * INTO ##Temp FROM OPENQUERY( Name1, 'EXEC sp_Who')
RETURN 1
END

IF @ServerName = 'Name2'
BEGIN
SELECT * INTO ##Temp FROM OPENQUERY( Name2, 'EXEC sp_Who')
RETURN 1
END
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL 7.0. Как во view использовать набор данных, полученный из хран. процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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