Usuário com melhor resposta
Como pegar resultado de uma procedure dentro da outra, result de uma sql 3 campos

Pergunta
-
Pessoal eu tenho essa procedure aqui
ALTER PROCEDURE [PROC_LOTECORRENTE] @CODCLI VARCHAR(5)
AS
BEGIN TRY
DECLARE @NUMFECCLI INT ,@DATINI DATETIME ,@DATFIN DATETIME
SELECT @NUMFECCLI = NUMFECCLI, @DATINI = DATINI , @DATFIN = DATFIN
FROM FECHCLIENTE
WHERE CODCLI = @CODCLI
AND GETDATE() >= DATINI AND GETDATE() < (DATFIN + 1)
IF (@NUMFECCLI IS NOT NULL) OR (@NUMFECCLI != 0)
SELECT @NUMFECCLI AS 'NUMFECCLI',@DATINI AS 'DATINI',@DATFIN AS 'DATFIN'
ELSE
BEGIN
SET @NUMFECCLI = 0
SELECT @NUMFECCLI AS 'NUMFECCLI',@DATINI AS 'DATINI',@DATFIN AS 'DATFIN'
END
END TRY
BEGIN CATCH
SELECT
'Erro na Procedure PROC_LOTECORRENTE' As Retorno,
ERROR_MESSAGE() AS MensagemdeErro,
ERROR_LINE() AS LinhadoErro,
ERROR_NUMBER() AS NúmeroErro
END CATCHComo que eu faço para pegar o resultado dela , pois ela vai me retornar 3 linhas , isso dentro de outra procedure.
Respostas
-
Olá,
Uma sugestão seria você colocar o resultado da primeira proc dentro de uma tabela (temporária provavelmente) e utilizar na próxima proc passando como parâmetro a tabela (usando Table Value Parameter)
Veja o Exemplo
INSERT INTO SuaTabelaTemporaria EXECUTE dbo.PROC_LOTECORRENTE(Valor); execute dbo.PROC_QUE_RECEBE_A_TABELA (SuaTabelaTemporaria). --Exemplo da criacao da proc com TVP CREATE TYPE TabelaType AS TABLE ( Campo1 Int , Campo2 INT ); GO CREATE PROCEDURE PROC_QUE_RECEBE_A_TABELA @TVP TabelaType READONLY AS INSERT INTO OutraTabela (Campo1, Campo2) SELECT * FROM @TVP; GO
Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008
- Marcado como Resposta Douglas a Fernandes quarta-feira, 18 de dezembro de 2013 15:15
Todas as Respostas
-
Olá,
Uma sugestão seria você colocar o resultado da primeira proc dentro de uma tabela (temporária provavelmente) e utilizar na próxima proc passando como parâmetro a tabela (usando Table Value Parameter)
Veja o Exemplo
INSERT INTO SuaTabelaTemporaria EXECUTE dbo.PROC_LOTECORRENTE(Valor); execute dbo.PROC_QUE_RECEBE_A_TABELA (SuaTabelaTemporaria). --Exemplo da criacao da proc com TVP CREATE TYPE TabelaType AS TABLE ( Campo1 Int , Campo2 INT ); GO CREATE PROCEDURE PROC_QUE_RECEBE_A_TABELA @TVP TabelaType READONLY AS INSERT INTO OutraTabela (Campo1, Campo2) SELECT * FROM @TVP; GO
Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008
- Marcado como Resposta Douglas a Fernandes quarta-feira, 18 de dezembro de 2013 15:15
-