passar um parametro para um select

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Ter, 09 Out 2007 11:43 pm

Tenho um select bem extenso tenho que mudar o mês para executar ele. Gostaria de colocar uma variavel para fosse subtituida no momento da execussão.
Algo assim

mês=4 /* abril*/

select * from tabela where
extract (month from data)=&mês

se fosse sempre o mês corrente eu so colocaria o extract na data atual e pronto, mas tenho que trazer dados de meses difrentes

Agradeço desde já a ajuda e desculpa se postei no local errado já que me inscrevi hoje e não conheço bem o forum.
henrique290
Localização: Porto Alegre - RS

Mensagemem Qua, 10 Out 2007 7:46 am

Brother, existem duas formas para se resolver esta situação:

A primeira, seria criar um CURSOR que receba parâmetros:
Código: Selecionar todos

-- Cursor com Parâmetro ------------------------------------------------------

DECLARE
 
  CURSOR cur_empregados (p_empno NUMBER)
    IS
      SELECT *
        FROM emp
       WHERE empno = p_empno;
 

  v_resultado cur_empregados%ROWTYPE;

BEGIN
 
  OPEN cur_empregados(7499);
  FETCH cur_empregados INTO v_resultado;
  CLOSE cur_empregados;
 
  dbms_output.put_line('Empregado: ' || v_resultado.ename);
 
END;   



A segunda, seria com CURSOR dinâmico.

Sobre cursor dinâmico, procure aqui no fórum esta string "cursor dinâmico" ou "dbms_sql" que irá localizar tópicos interessantes.
Trevisolli
Localização: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Mensagemem Qua, 10 Out 2007 10:08 am

E qual é o problema com seu exemplo inicial?
Eu estou no SQL*Plus, criei um script chamado data.sql assim:
Código: Selecionar todos
select dtexportacao
from planopagamento
where extract (month from dtexportacao)=&mês
/


Agora, no SQL*Plus, eu executo ele:
Código: Selecionar todos
SQL> @data
Input truncated to 1 characters
Enter value for mês: 10
old   3: where extract (month from dtexportacao)=&mês
new   3: where extract (month from dtexportacao)=10

DTEXPORTACA
-----------
01-OCT-2007
09-OCT-2007
03-OCT-2005
01-OCT-2007
02-OCT-2007
19-OCT-2005
09-OCT-2007
01-OCT-2007
09-OCT-2007
04-OCT-2007
09-OCT-2007
01-OCT-2007

12 rows selected.

SQL> @data
Input truncated to 1 characters
Enter value for mês: 5
old   3: where extract (month from dtexportacao)=&mês
new   3: where extract (month from dtexportacao)=5

DTEXPORTACA
-----------
21-MAY-2007
17-MAY-2005
17-MAY-2005
17-MAY-2005
09-MAY-2007
09-MAY-2007

6 rows selected.

SQL>


Como pode ver, ele só mostra o mês informado! Não tem erro :-D
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


    Voltar para SQL

    Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron