Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Usando tabelas temporárias no SSIS


ATUALIZAÇÃO de novembro de 2020.
Esta postagem foi substituída por Como executar um procedimento armazenado do SSIS para obter sua saída em arquivo de texto que descreve como executar um procedimento armazenado do SSIS
exec mySproc WITH RESULT SETS ((i int))

veja a solução fornecida por Troy Witthoeft

Resposta antiga
Há outra solução mencionada em https://web.archive.org/web/20120915093807/http://sqlserverpedia.com/blog/sql-server-bloggers/ssis-stored-procedure-metadata . Veja a opção 3. (Novembro de 2020; link atualizado)

Citação:Adicione alguns metadados e o "set nocount on" ao procedimento armazenado com uma "cláusula if em curto-circuito" (se 1 =0) e uma instrução de seleção falsa na parte superior. Eu testei tentando deixar o "set nocount ligado" de fora e não funcionou.
CREATE PROCEDURE [dbo] . [GenMetadata] AS 
SET NOCOUNT ON 
IF 1 = 0 
    BEGIN
         -- Publish metadata 
        SELECT   CAST (NULL AS INT ) AS id , 
                CAST (NULL AS NCHAR ( 10 )) AS [Name] , 
                CAST (NULL AS NCHAR ( 10 )) AS SirName 
    END 

 -- Do real work starting here 
CREATE TABLE #test 
    ( 
      [id] [int] NULL, 
      [Name] [nchar] ( 10 ) NULL, 
      [SirName] [nchar] ( 10 ) NULL 
    )