Array
(
)

Procedure no ORACLE

Renato Tavares
   - 26 out 2009

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
   - 25 nov 2009

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

0
|
0

Bruno Batista
   - 02 dez 2009

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;

0
|
0

Bruno Batista
   - 02 dez 2009

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;

0
|
0

Renato Tavares
   - 02 dez 2009

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

0
|
0

Bruno Batista
   - 02 dez 2009

Boa tarde,

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

0
|
0

Renato Tavares
   - 02 dez 2009

Bruno Vou chamar essa procedure no Crystal Reports.    obrigado   Renato

0
|
0

Bruno Batista
   - 02 dez 2009

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.

0
|
0

Renato Tavares
   - 02 dez 2009

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 

0
|
0

Bruno Batista
   - 02 dez 2009

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.

0
|
0

Renato Tavares
   - 02 dez 2009

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      

0
|
0

Bruno Batista
   - 02 dez 2009

Boa tarde,

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

Atenciosamente,

Bruno Moreira Batista.

0
|
0

Renato Tavares
   - 02 dez 2009

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    

0
|
0

Bruno Batista
   - 02 dez 2009

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.

0
|
0

Renato Tavares
   - 02 dez 2009

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

0
|
0

Bruno Batista
   - 02 dez 2009

  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.

0
|
0