Declarar variável simples e utilizar em consulta (Select) Oracle

SQL

Oracle

Banco de Dados

09/11/2017

Pessoal, estou acostumado com o SQL onde eu posso simplesmente dar um "DECLARE @VAR1 INT SET @VAR1 = 10" e começar a utilizar..
No oracle nao estou tendo a mesma facilidade, eu precisava fazer isso com uma variável mas não deu certo, alguém saberia me dizer onde estou errando?

Lembrando que eu queria simplesmente atribuir o valor 10 à variável, não tenho como dar um "SELECT INTO" nela por que não tenho essa informação no banco de dados.

DECLARE
V_MES OUT NUMBER;
V_MES :=10;

BEGIN
Select SUM(Valor) From Pffinanc
Where CODCOLIGADA = V_MES and CODEVENTO in ('5611')
AND VALOR>0 And MESCOMP = 10 and ANOCOMP = 2017 and chapa in (select chapa from pfunc where codcoligada= 6 )

END

Abraços!
Lailson Junior

Lailson Junior

Curtidas 0

Respostas

Roberto Spernega

Roberto Spernega

09/11/2017

Boa tarde,

montando um bloco ficaria mais ou menos assim

set serverout on size 1000000

DECLARE
--
V_MES NUMBER := 10;
v_valor number;
BEGIN
Select SUM(Valor) into v_valor
From Pffinanc
Where CODCOLIGADA = V_MES and CODEVENTO in ('5611')
AND VALOR>0
And MESCOMP = 10
and ANOCOMP = 2017
and chapa in (select chapa from pfunc where codcoligada= 6 );
--
dbms_output.put_line('Valor '||to_char(v_valor));
--
END;
/


ou um select direto

variable v_mes number
exec :v_mes := 10

Select SUM(Valor)
From Pffinanc
Where CODCOLIGADA = :V_MES and CODEVENTO in ('5611')
AND VALOR>0
And MESCOMP = 10
and ANOCOMP = 2017
and chapa in (select chapa from pfunc where codcoligada= 6 );


Não testado...
GOSTEI 0
Lailson Junior

Lailson Junior

09/11/2017

A segunda opção me pareceu mais dentro do que eu precisava, mas ainda sim deu erro... :(
GOSTEI 0
Roberto Spernega

Roberto Spernega

09/11/2017

Bom dia flash,

Aparentemente o Select que você postou estava com a variável na posição errada.


variable v_mes number
exec :v_mes := 10

Select SUM(Valor)
From Pffinanc
Where CODCOLIGADA = 6
and CODEVENTO in ('5611')
AND VALOR>0
And MESCOMP = :V_MES
and ANOCOMP = 2017
and chapa in (select chapa from pfunc where codcoligada= 6 );

tenta desse jeito, de ainda der erro, posta o erro.
GOSTEI 0
POSTAR