SQL Server: Как создать временную таблицу с неизвестными столбцами данных / именами? - PullRequest
1 голос
/ 11 августа 2009

Мне нужно сделать запрос к нескольким базам данных. Я получил часть для создания запроса для каждой базы данных, но теперь мне нужно поместить результат во что-то для каждого запроса, чтобы я мог его вернуть.

@ требуемый запрос

ALTER PROCEDURE [dbo].[RequeteMultiBd]
    @requete varchar(max)
AS
BEGIN

    --get server + database name
    select dbo.trim(Serveur)+'.'+ dbo.trim(db) as name, row_number() over (order by db) seq into #tmp from dbo.DataBase;

    declare @name sysname
    declare @sql nvarchar(max)
    declare @seq int
    set @seq = 0

    --getting the next name and seq
    select top 1 @name = name, @seq = seq
            from #tmp where seq > @seq order by seq

    set @sql = replace(@requete, '<bd>', @name);
    --Trying to init the table (that part doesnt work)
    insert into #result exec( @sql );

    --Filling up the table
    WHILE (1=1)
    BEGIN
        select top 1 @name = name, @seq = seq
            from #tmp where seq > @seq order by seq
        if(@@rowcount = 0) break;

        set @sql = replace(@requete, '<bd>', @name);
        insert into #result exec( @sql );

    END
    select * from #result

END

Из этого кода я получаю эту ошибку, потому что #result не завершается. Мне нужно создать его с динамическими именами столбцов, но как?

Неверное имя объекта '#result'

Ответы [ 3 ]

1 голос
/ 11 августа 2009

Попробуйте использовать SELECT .... INTO #Result FROM ...

Это создаст таблицу с правильными столбцами.

http://www.w3schools.com/Sql/sql_select_into.asp

0 голосов
/ 11 августа 2009

Вам не нужно использовать динамический sql для запуска вашей хранимой процедуры, вы можете вызвать ее как:

EXEC @requete '<bd>', @name

где @requete - допустимое имя, например server.owner.procedure_name

0 голосов
/ 11 августа 2009

вы можете разделить временную таблицу между вызовами процедур, хотя я никогда не делал этого между базами данных ...

проверить это:

Как обмениваться данными между хранимыми процедурами, Erland Sommarskog

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...