Procedure no ORACLE
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
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
Curtidas 0
Respostas
Renato Tavares
26/10/2009
Olá..!!
Ninguém consegue me ajudar mesmo...!!
GOSTEI 0
Bruno Batista
26/10/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;
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;
GOSTEI 0
Bruno Batista
26/10/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;
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;
GOSTEI 0
Renato Tavares
26/10/2009
Olá Bruno..!!
Tudo Bem?
Como eu faço a chamada desta procedure??
Muito Obrigado..!!
Renato
GOSTEI 0
Bruno Batista
26/10/2009
Boa tarde,
você quer utiliza está procedure no banco de dados, em outra procedure, ou em um sistema?
você quer utiliza está procedure no banco de dados, em outra procedure, ou em um sistema?
GOSTEI 0
Renato Tavares
26/10/2009
Bruno
Vou chamar essa procedure no Crystal Reports.
obrigado
Renato
GOSTEI 0
Bruno Batista
26/10/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.
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.
GOSTEI 0
Renato Tavares
26/10/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
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
GOSTEI 0
Bruno Batista
26/10/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.
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.
GOSTEI 0
Renato Tavares
26/10/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
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
GOSTEI 0
Bruno Batista
26/10/2009
Boa tarde,
post para mim dar uma olhada o que você está tentando criar. Por favor?
Atenciosamente,
Bruno Moreira Batista.
post para mim dar uma olhada o que você está tentando criar. Por favor?
Atenciosamente,
Bruno Moreira Batista.
GOSTEI 0
Renato Tavares
26/10/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
GOSTEI 0
Bruno Batista
26/10/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.
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.
GOSTEI 0
Renato Tavares
26/10/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
GOSTEI 0
Bruno Batista
26/10/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.
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.
GOSTEI 0