Ir para conteúdo
Fórum Script Brasil
  • 0

Query para retornar valor para variavel


Odilton jr.

Pergunta

Bom dia a todos,

Tenho uma Query onde tiro um relatório, só que agora preciso tirar mais uma informação do meu sistema, só que não sei como retornar esse valor para a variavel... Segue abaixo a Query para retornar apenas o valor que eu quero, que no caso é 'PAGO' ou 'NÃO' e tambem, caso seja 'PAGO' queria botar a data, tipo: 'PAGO - '+@DATA!

-- DECLARANDO VARIAVEIS
DECLARE @CODIGO INTEGER 
DECLARE @DATAT DATETIME
DECLARE @DATA INTEGER
DECLARE @OBS INTEGER
DECLARE @TOTAL INTEGER

-- COMANDO
DECLARE TMP_CURSOR CURSOR FOR 
SELECT DISTINCT CÓDIGO FROM TMP_KARLA
OPEN TMP_CURSOR 
FETCH NEXT FROM TMP_CURSOR INTO @CODIGO
WHILE @@FETCH_STATUS = 0
   BEGIN
    -- DAR VALOR A VARIAVEIS
    SET @CODIGO = (SELECT TOP 1 CÓDIGO FROM TMP_KARLA)
    SET @DATAT = (SELECT TOP 1 DATA FROM RECIBO WHERE TMP_KARLA.CÓDIGO = RECIBO.CÓDIGO)
    SET @DATA = CONVERT(INTEGER,SUBSTRING(@DATAT,1,10))
    SET @OBS = 
        CASE
            WHEN (SELECT TOP 1 CÓDIGO FROM ACORDOS AC
            INNER JOIN TMP_KARLA TK ON TK.CÓDIGO = AC.CÓDIGO
            WHERE TK.RECIBO IS NOT NULL) 
            THEN 'PAGO'
            ELSE 'NÃO'
        END
    UPDATE TMP_KARLA SET PAGAMENTO = @OBS
    SET @TOTAL = @TOTAL+'1'
     FETCH NEXT FROM TMP_CURSOR INTO @CODIGO
   END
CLOSE TMP_CURSOR
DEALLOCATE TMP_CURSOR

PRINT @TOTAL
PRINT @DATA
GO
-- 
-- UPDATE TMP_KARLA SET PAGAMENTO = ''

SELECT * FROM TMP_KARLA

Esqueci de dizer, nesta query está dando erro:

Server: Msg 156, Level 15, State 1, Line 24

Incorrect syntax near the keyword 'THEN'.

Server: Msg 156, Level 15, State 1, Line 30

Incorrect syntax near the keyword 'END'.

Editado por Odilton jr.
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá meu amigo!! Pelo q entendi, você está querendo concatenar os dados de PAGO e data, ok? A gravação continuará sendo na mesma coluna. Verifique se não vai “truncar” os dados....

Segue abaixo o script. Não consegui testar no sql, por motivos óbvios... rs.

Concatenei o PAGO com a data, utilizando o + . Pra isso, você tem que converter pra caracter, porque senão o sql pensa q é soma e não concatenação.

O erro que mencionou no final da msg é porque você tem q pegar o resultado do subselect e comparar com alguma coisa, ok? Tipo:

WHEN (SELECT TOP 1 ....) > 10

THEN 'PAGO' + (convert(varchar(2),@DATA))

ELSE 'NÃO'

Então você completa aí....

Espero ter ajudado. Testa ai e me fala.

O script alterado:

-- DECLARANDO VARIAVEIS

DECLARE @CODIGO INTEGER

DECLARE @DATAT DATETIME

DECLARE @DATA INTEGER

DECLARE @OBS INTEGER

DECLARE @TOTAL INTEGER

-- COMANDO

DECLARE TMP_CURSOR CURSOR FOR

SELECT DISTINCT CÓDIGO FROM TMP_KARLA

OPEN TMP_CURSOR

FETCH NEXT FROM TMP_CURSOR INTO @CODIGO

WHILE @@FETCH_STATUS = 0

BEGIN

-- DAR VALOR A VARIAVEIS

SET @CODIGO = (SELECT TOP 1 CÓDIGO FROM TMP_KARLA)

SET @DATAT = (SELECT TOP 1 DATA FROM RECIBO WHERE TMP_KARLA.CÓDIGO = RECIBO.CÓDIGO)

SET @DATA = CONVERT(INTEGER,SUBSTRING(@DATAT,1,10))

SET @OBS =

CASE

WHEN (SELECT TOP 1 CÓDIGO FROM ACORDOS AC INNER JOIN TMP_KARLA TK ON TK.CÓDIGO = AC.CÓDIGO

WHERE TK.RECIBO IS NOT NULL) -- AQUI você COMPLETA A CLAUSULA, TIPO "> 1 "

THEN 'PAGO' + (convert(varchar(2),@DATA))

ELSE 'NÃO'

END

UPDATE TMP_KARLA SET PAGAMENTO = @OBS

SET @TOTAL = @TOTAL+'1'

FETCH NEXT FROM TMP_CURSOR INTO @CODIGO

END

CLOSE TMP_CURSOR

DEALLOCATE TMP_CURSOR

PRINT @TOTAL

PRINT @DATA

GO

--

-- UPDATE TMP_KARLA SET PAGAMENTO = ''

SELECT * FROM TMP_KARLA

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...