Declarar variável simples e utilizar em consulta (Select) Oracle
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!
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
Curtidas 0
Respostas

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...
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
09/11/2017
A segunda opção me pareceu mais dentro do que eu precisava, mas ainda sim deu erro... :(
GOSTEI 0

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.
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