• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

skcratch

[Resolvido] - Obter valor retornado pela instrução Exec

3 mensagens neste tópico

Viva!

Neste momento, tenho o seguinte código:

DECLARE @ROWS_TOTAL INT            
DECLARE @CONDICAO NVARCHAR(100)
SET @CONDICAO = ' YEAR(DATA) = 2008'
DECLARE @SQLSTR NVARCHAR(2000)

SET @SQLSTR = 'SELECT COUNT(*)
FROM         
	(SELECT DISTINCT sde.MARIAPLANTASLOC.DATA, sde.MARIAGRUPOPLANTASTIPO.DESCRICAO 
            FROM sde.MARIAPLANTASLOC LEFT OUTER JOIN
            sde.MARIAGRUPOPLANTASTIPO ON sde.MARIAPLANTASLOC.CODGRUPO = sde.MARIAGRUPOPLANTASTIPO.CODGRUPO) AS TESTE 
WHERE' + @CONDICAO   

Aquilo que eu pretendia era executar a instrução presente da variável @SQLSTR através da função EXEC e armazenar o valor retornado na variável @ROWS_TOTAL mas não sei como o implementar.

Grato desde já pela ajuda,

Cumps!

:D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes obter um valor da seguinte forma:

DECLARE @ROWS_TOTAL INT            
DECLARE @CONDICAO NVARCHAR(100)
SET @CONDICAO = ' YEAR(DATA) = 2008'
DECLARE @XPTOTBL TABLE(VALOR INT)

INSERT INTO @XPTOTBL EXEC ('SELECT COUNT(*)
        FROM         
                (SELECT DISTINCT sde.MARIAPLANTASLOC.DATA, sde.MARIAGRUPOPLANTASTIPO.DESCRICAO 
            FROM sde.MARIAPLANTASLOC LEFT OUTER JOIN
            sde.MARIAGRUPOPLANTASTIPO ON sde.MARIAPLANTASLOC.CODGRUPO = sde.MARIAGRUPOPLANTASTIPO.CODGRUPO) AS TESTE 
        WHERE' + @CONDICAO)
SET @ROWS_TOTAL = (SELECT ISNULL(VALOR,0) FROM @XPTOTBL)
SELECT @ROWS_TOTAL 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva!

Antes demais, obrigado pela resposta. No entanto, acabei por utilizar uma solução que creio ser mais simples, já que não obriga a utilização de uma tabela auxiliar para armazenar o valor calculado. A seguir, é apresentado o código que foi utilizado:

SET @SQLString = N'SELECT @ROWS_TOTAL_OUT = COUNT(*) FROM
    (SELECT DISTINCT YEAR(sde.MARIAPLANTASLOC.DATA) AS ANO, MONTH(sde.MARIAPLANTASLOC.DATA) AS MES, sde.MARIAGRUPOPLANTASTIPO.DESCRICAO
        FROM sde.MARIAPLANTASLOC LEFT OUTER JOIN
        sde.MARIAGRUPOPLANTASTIPO ON sde.MARIAPLANTASLOC.CODGRUPO = sde.MARIAGRUPOPLANTASTIPO.CODGRUPO
        WHERE' + @CONDICAO + '
        GROUP BY YEAR(sde.MARIAPLANTASLOC.DATA), MONTH(sde.MARIAPLANTASLOC.DATA), sde.MARIAGRUPOPLANTASTIPO.DESCRICAO)
        AS RESULTADO';

    SET @ParmDefinition = N'@ROWS_TOTAL_OUT INT OUTPUT';
    EXECUTE sp_executesql @SQLString, @ParmDefinition, @ROWS_TOTAL_OUT=@ROWS_TOTAL OUTPUT;

Cumps!

:D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora