Procedure no ORACLE

26/10/2009

0

Olá, Boa Noite à Todos..!!  Parabéns pelo novo Fórum..!!   Alguém pode me dizer como ficaria esta procedure no ORACLE..!!  drop procedure teste;
Create Procedure teste (par1 varchar(50), par2 varchar(50))
returning VARCHAR(50) as cod_cliente,VARCHAR(50) as nom_cliente; define vcampo1 varchar(50);
define vcampo2 varchar(50); foreach
select cod_cliente,nom_cliente
into vcampo1,vcampo2
from clientes
where cod_cliente between par1 and par2
return vcampo1,vcampo2 WITH RESUME;
end foreach;
end procedure
Desde já, muito obrigado..!!  Renato
Renato Tavares

Renato Tavares

Responder

Posts

25/11/2009

Renato Tavares

Olá..!!    Ninguém consegue me ajudar mesmo...!!  
Responder

02/12/2009

Bruno Batista

Boa tarde,

caso precise de efetuar um looping, onde não vi a necessidade, fica desse jeito.

Create Or Replace teste (par1 In String,
                         par2 In String,
                         codigoCliente Out String,
                         nomeCliente Out String)
as begin
declare
  Cursor C1(filtro1 In String,
            filtro2 In String) is
    select cod_cliente,
           nom_cliente
      from clientes
     where cod_cliente between filtro1 and filtro2;
begin
  for Ce1 in C1(par1, par2) loop
    codigoCliente := Ce1.Cod_Cliente;
    nomeCliente   := Ce1.Nom_Cliente;
  end loop;
end teste;
Responder

02/12/2009

Bruno Batista

Boa tarde,

caso não precise de efetuar um looping, fica desta forma.

Create Or Replace teste (par1 In String,
                         par2 In String,
                         codigoCliente Out String,
                         nomeCliente Out String)
as begin
  select cod_cliente,
         nom_cliente
    Into codigoCliente,
         nomeCliente
    from clientes
   where cod_cliente between par1 and par2;
end teste;
Responder

02/12/2009

Renato Tavares

Olá Bruno..!! Tudo Bem?    Como eu faço a chamada desta procedure??    Muito Obrigado..!!   Renato  
Responder

02/12/2009

Bruno Batista

Boa tarde,

você quer utiliza está procedure no banco de dados, em outra procedure, ou em um sistema?
Responder

02/12/2009

Renato Tavares

Bruno Vou chamar essa procedure no Crystal Reports.    obrigado   Renato
Responder

02/12/2009

Bruno Batista

Boa tarde,

no Crystal Report agora você me apertou sem me abraçar.

Mas a chamada dela é normal, o nome dela e passar quatro parâmetros.

Teste(par1,
          par2,
          codigoCliente,
          nomeCliente);

Onde o codigoCliente e nome do cliente tem que aceitar receber valor.

Atenciosamente,

Bruno Moreira Batista.
Responder

02/12/2009

Renato Tavares

Olá Bruno. Veja: create or replace procedure outra (par1 In String,
                         par2 In String,
                         cod_empresa out String,
                         cod_centro Out String)
as begin
declare
  Cursor C1(filtro1 In String,
            filtro2 In String) is
    select CODEMP_R,
           CODCC_R
      from APONTAMENTO
     where CODCC_R between filtro1 and filtro2;
begin
  for Ce1 in C1(par1, par2) loop
    cod_empresa := Ce1.CODEMP_R;
    cod_centro  := Ce1.CODCC_R;
  end loop;
end;
end;   No Banco estou fazendo da seguinte maneira, porém não sei quais os parametros que tenho que colocar nas variáveis de saida.  BEGIN
OUTRA ('02210003','02210005');
END; Preciso fazer a seleção do CODCC_R Inicial ao CODCCR_R Final 
Responder

02/12/2009

Bruno Batista

Boa tarde,

Ficaria desta forma.



  CodCliente VarChar2(50);
  NomeCliente VarChar2(50);

BEGIN
Teste ('02210003', // Os primeiros parâmetros serão fixos.
          '02210005',
         CodCliente, // Os últimos parâmetros preciso buscar um valor, onde será alimentado.
         NomeCliente);
END;

Atenciosamente,

Bruno Moreira Batista.
Responder

02/12/2009

Renato Tavares

DECLARE CODEMP_R VARCHAR2(50);
DECLARE CODCC_R VARCHAR2(50); BEGIN
OUTRA ('02210003', '02210005', CODEMP_R, CODCC_R);
END; Está Ocorrendo um erro..!!
ORA-06550: linha 2, coluna 1:
PLS-00103: Encontrado o símbolo "DECLARE" quando um dos seguintes símbolos era esperado:

   begin function package pragma procedure subtype type use
  
   form current
   cursor
O símbolo "begin" foi substituído por "DECLARE" para continuar.
ORA-06550: linha 7, coluna 4:
PLS-00103: Encontrado o símbolo "end-of-file" quando um dos seguintes símbolos era esperado:

   begin case declare end exception exit      
Responder

02/12/2009

Bruno Batista

Boa tarde,

post para mim dar uma olhada o que você está tentando criar. Por favor?

Atenciosamente,

Bruno Moreira Batista.
Responder

02/12/2009

Renato Tavares

Olá..!!   Eu quero uma procedure para dar um Select na Tabela "APONTAMENTO"  passando 2 parametros. Dai eu posso chamar a procedure direto no crystal reports.   EX:   No SQL Server eu faço assim:   Create Procedure teste (@par1,@par2) as Select *from APONTAMENTO where CODCC_R between @par1 and @par2   Eu executo assim no Crystal:   call teste('02210003','02210005')     Não sei como fazer para funcionar no Oracle..!!    É isso..!!   Muito Obrigado pela atenção..!!   Renato    
Responder

02/12/2009

Bruno Batista

Boa tarde,

não consegui achar um meio pelo banco de dados, não.
Iria sugerir criar um View, mas acabaria sendo a mesma coisa da tabela.

Em qual linguagem que você está utilizando o Crystal Report, nele não tem como passar um objeto que realiza essa pesquisa, não???

Atenciosamente,

Bruno Moreira Batista.
Responder

02/12/2009

Renato Tavares

Sim, Bruno   Eu posso digitar o código dentro de um editor do Crystal e pedir os parametros no próprio crystal.   É que em Procedure feita direta no banco de dados eu consigo manipular mais informações quando o select é muito complexo. Por isso pedi um exemplo no Oracle, pois começamos a trabalhar aqui na empresa com esse banco e com um exemplo eu conseguiria adaptar para qualquer outro.   Mas beleza, se conseguir mais alguma coisa. Vou continuar pesquisando também e se encontrar uma solução, posto aqui..!!   Valeu..!!   Renato
Responder

02/12/2009

Bruno Batista

  Boa noite,

pode ser feito igual eu iria sugerir, criar uma VIEW onde faria todo o SQL no banco de dados, e depois só faria um SQL simples.

CREATE OR REPLACE VIEW TESTE AS
SELECT *
  FROM TABELA1 A1,
      TABELA2 A2
WHERE A1.CAMPO = A2.CAMPO
  AND ....


E depois só faz

SELECT *
  FROM TESTE


Atenciosamente,

Bruno Moreira Batista.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar