@damne12iche

Как использовать другие базы данных в функции?

Есть простейшая функция возвращающая таблицу - SELECT значения по идентификатору, например
CREATE FUNCTION dbo.func1 (@dbase varchar(max),@t1f1var int)
RETURNS @restbl
TABLE(t1f1 int,t1f2 int) 
AS
BEGIN
    insert into @restbl
	select t1f1, t1f2
	from (хочу сюда писать '+@dbase+')dbo.t1
	where t1f1= @t1f1var
	return;
END

В действительности, эта таблица есть во всех моих 20 базах, хочу вот из одной обращаться в любую и получать значение Но не удаётся приписать туда второй вар параметр, который позволит мне выбрать базу данных
(по типу dbname1.dbo.t1), подскажите пожалуйста, как это сделать, а ещё лучше если приложите познавательный ресурс по теме вопроса (ну вдруг что то в голову придёт)
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab Куратор тега Transact-SQL
Здесь отвечаю на вопросы.
Создайте представление со всеми базами данных, например:
CREATE VIEW [dbo].[View_All]
AS
SELECT 'Videoteq' AS BaseName, ID, LastName FROM Videoteq.dbo.Person
UNION
SELECT 'Phondex', ID, LastName FROM Phondex.dbo.Performer
GO

И делайте по нему запрос.
SELECT LastName
FROM View_All
WHERE (BaseName = 'Phondex') AND (ID = 512)

из всех этих данных в одной таблице
Реально будет обрабатываться только одна таблица:
План выполнения
5d73feb420bf6047196904.png

там нужна именно функция
Так и сделайте функцию с запросом из представления.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы