Bom dia !
Estou precisando passar um parâmetro (cod_empresa) numa procedure a fim de atualizar determinados registros de uma tabela baseando-se no código da empresa.
Pretendo dar vários call's cada um para uma empresa diferente.
Como devo proceder para passar o parâmetro no call e no where pegar somente a empresa do parâmetro ?
Passagem de Parâmetro numa Procedure em PL/SQL
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother,
Dá uma olhadinha neste exemplo:
Se não for isso q precisa, dá um alô.
Dá uma olhadinha neste exemplo:
CREATE OR REPLACE PROCEDURE PRC_PARAMETRO (P_COD_EMPRESA IN NUMBER)
IS
V_NOME_EMPRESA VARCHAR2(100);
BEGIN
SELECT NOME_EMPRESA
INTO V_NOME
FROM TAB_EMPRESA
WHERE COD_EMPRESA = P_COD_EMPRESA;
EXCEPTION
...
END;
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Fica assim brother:
SE estiver em uma PACKAGE:
qualquer coisa, manda ai.
PRC_PARAMETRO(01);
PCK_PARAMETRO.PRC_PARAMETRO(01);
-
- Rank: Estagiário Pleno
- Mensagens: 6
- Registrado em: Sex, 09 Nov 2007 10:28 am
- Localização: Blumenau-SC
Márcio
Ainda não foi dessa vez brother !
O parâmetro é um char(02).
O parâmetro é um char(02).
SQL> EXECUTE pck_gera_item_sup.INSERE_CONTABEIS('01');
BEGIN pck_gera_item_sup.INSERE_CONTABEIS('01'); END;
*
ERRO na linha 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'INSERE_CONTABEIS'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
-
- Rank: Estagiário Pleno
- Mensagens: 6
- Registrado em: Sex, 09 Nov 2007 10:28 am
- Localização: Blumenau-SC
Márcio
Trevisolli ! Só para você conseguir visualizar melhor. Estou achando que há algo errado nas declarações de PCk ou PRC.
CREATE OR REPLACE PACKAGE pck_gera_item_sup IS PROCEDURE INSERE_CONTABEIS;
END;
/
CREATE OR REPLACE PROCEDURE INSERE_CONTABEIS (P_COD_EMPRESA IN CHAR(02))
END ;
/
CREATE OR REPLACE PACKAGE BODY pck_gera_item_sup IS
PROCEDURE INSERE_CONTABEIS IS
TYPE contabeis_rectype IS RECORD
(cod_empresa CHAR(02),
cod_item CHAR(15),
ies_tip_item CHAR(1),
grupo CHAR(02) );
contabeis_rec contabeis_rectype;
existe_record CHAR := 'N';
-- Define e inicializa variaveis contadores
pl_qtd_item_sup_produzidos number(10) := 0;
pl_qtd_item_sup_finais number(10) := 0;
pl_qtd_item_sup_compl number(10) := 0;
pl_qtd_item_param_produzidos number(10) := 0;
pl_qtd_item_param_finais number(10) := 0;
pl_contador number(10) := 0;
BEGIN
DECLARE
CURSOR contabeis_cur IS
SELECT A.COD_EMPRESA,A.COD_ITEM,A.IES_TIP_ITEM,SubStr(A.COD_ITEM,1,2) GRUPO
FROM ITEM A
WHERE A.COD_EMPRESA = '01'
AND ( A.IES_TIP_ITEM = 'F' OR
A.IES_TIP_ITEM = 'B' OR
A.IES_TIP_ITEM = 'P' OR
(A.IES_TIP_ITEM = 'C' AND A.COD_ITEM LIKE '08%') )
AND NOT EXISTS (SELECT *
FROM ITEM_SUP B
WHERE B.COD_EMPRESA = A.COD_EMPRESA
AND B.COD_ITEM = A.COD_ITEM );
BEGIN
IF contabeis_cur%ISOPEN THEN
CLOSE contabeis_cur;
END IF;
OPEN contabeis_cur;
LOOP
.....................
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Na SPEC da tua package, declare a procedure com o parâmetro:
CREATE OR REPLACE PACKAGE pck_gera_item_sup IS
PROCEDURE INSERE_CONTABEIS(P_COD_EMPRESA IN CHAR(02));
END;
Editado pela última vez por Trevisolli em Sex, 09 Nov 2007 1:35 pm, em um total de 1 vez.
-
- Rank: Estagiário Pleno
- Mensagens: 6
- Registrado em: Sex, 09 Nov 2007 10:28 am
- Localização: Blumenau-SC
Márcio
Está faltando peça no quebra-cabeça brother.
Deu caca de novo...
Deu caca de novo...
CREATE OR REPLACE PACKAGE pck_gera_item_sup IS PROCEDURE INSERE_CONTABEIS (P_COD_EMPRESA IN CHAR(02) ) ;
PLS-00103: Encountered the symbol "(" when expecting one of the following:
:= ) , default varying character large
The symbol ":=" was substituted for "(" to continue.
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother,
Posta teu código todo aqui pra gente, pode seR?
Outra coisa, esqueci de um parêntese na SPEC no trecho anterior e o corrigi.
Segue novamente:
Posta teu código todo aqui pra gente, pode seR?
Outra coisa, esqueci de um parêntese na SPEC no trecho anterior e o corrigi.
Segue novamente:
CREATE OR REPLACE PACKAGE pck_gera_item_sup IS
PROCEDURE INSERE_CONTABEIS(P_COD_EMPRESA IN CHAR(02));
END;
-
- Rank: Estagiário Pleno
- Mensagens: 6
- Registrado em: Sex, 09 Nov 2007 10:28 am
- Localização: Blumenau-SC
Márcio
Segue comando amigo.
CREATE OR REPLACE PACKAGE pck_gera_item_sup IS PROCEDURE INSERE_CONTABEIS;
END;
/
CREATE OR REPLACE PROCEDURE INSERE_CONTABEIS(P_COD_EMPRESA IN CHAR(02));
END ;
/
CREATE OR REPLACE PACKAGE BODY pck_gera_item_sup IS
PROCEDURE INSERE_CONTABEIS IS
TYPE contabeis_rectype IS RECORD
(cod_empresa CHAR(02),
cod_item CHAR(15),
ies_tip_item CHAR(1),
grupo CHAR(02) );
contabeis_rec contabeis_rectype;
existe_record CHAR := 'N';
-- Define e inicializa variaveis contadores
pl_qtd_item_sup_produzidos number(10) := 0;
pl_qtd_item_sup_finais number(10) := 0;
pl_qtd_item_sup_compl number(10) := 0;
pl_qtd_item_param_produzidos number(10) := 0;
pl_qtd_item_param_finais number(10) := 0;
pl_contador number(10) := 0;
BEGIN
DECLARE
CURSOR contabeis_cur IS
SELECT A.COD_EMPRESA,A.COD_ITEM,A.IES_TIP_ITEM,SubStr(A.COD_ITEM,1,2) GRUPO
FROM ITEM A
WHERE A.COD_EMPRESA = '01'
AND A.IES_TIP_ITEM = 'F'
AND NOT EXISTS (SELECT *
FROM ITEM_SUP B
WHERE B.COD_EMPRESA = A.COD_EMPRESA
AND B.COD_ITEM = A.COD_ITEM );
BEGIN
IF contabeis_cur%ISOPEN THEN
CLOSE contabeis_cur;
END IF;
OPEN contabeis_cur;
LOOP
IF contabeis_rec.ies_tip_item = 'F' THEN
FETCH contabeis_cur INTO contabeis_rec;
dbms_output.put_line('Tipo 08 '||contabeis_rec.cod_empresa||' '||contabeis_rec.cod_item);
EXIT WHEN contabeis_cur%NOTFOUND;
existe_record := 'S';
-- conforme e-mail enviado pelo Osni à Gilmara em 18/09/2007 devem ser considerados acabados
-- todos os itens 80 à 90
IF (contabeis_rec.grupo <> '80' AND contabeis_rec.grupo <> '81' AND contabeis_rec.grupo <> '82' AND
contabeis_rec.grupo <> '83' AND contabeis_rec.grupo <> '84' AND contabeis_rec.grupo <> '85' AND
contabeis_rec.grupo <> '86' AND contabeis_rec.grupo <> '87' AND contabeis_rec.grupo <> '88' AND
contabeis_rec.grupo <> '89' AND contabeis_rec.grupo <> '90') OR contabeis_rec.ies_tip_item = 'B' THEN
INSERT INTO ITEM_SUP VALUES (contabeis_rec.cod_empresa,contabeis_rec.cod_item,'N','N',1510,0,0,' ',NULL,' ','113010102',NULL,NULL,0,0,0,0,0,0,0,'S',1,0,0,0,0,0,0,0,0,0,NULL,0,'O','O','151',105,'D');
pl_qtd_item_sup_produzidos := pl_qtd_item_sup_produzidos + 1;
END IF;
END IF;
End Loop;
CLOSE contabeis_cur;
IF existe_record = 'N' THEN
dbms_output.put_line('Não existem registros a processar');
END IF;
EXCEPTION
WHEN OTHERS THEN
Raise_Application_Error(-20999,'Erro de Execução. '||SQLERRM);
END;
END;
END;
/
EXECUTE pck_gera_item_sup.INSERE_CONTABEIS('01');
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Google Adsense [Bot] e 3 visitantes