我正在尝试使用 Oracle 中的另一个过程调用两个过程。 这是我正在使用的查询:
CREATE OR REPLACE PROCEDURE p_reproc_tickets(p_Dta_Processo IN OUT DATE,
p_Cod_Loja_Ini IN OUT NUMBER,
p_Status OUT VARCHAR2,
p_Retorno OUT VARCHAR2) IS
l_Cod_loja number;
l_p_Data date;
l_p_Mes number;
BEGIN
l_Cod_loja := p_Cod_Loja_Ini;
l_p_Data := p_Dta_Processo;
l_p_Mes := To_Number('1' || To_Char(Trunc(p_Dta_Processo), 'RRMM'));
p_Qtd_ticket_dia(l_Cod_loja, l_p_Data, l_p_Data);
P_Qtd_ticket_mes(l_Cod_loja, l_p_Mes);
EXCEPTION
WHEN OTHERS THEN
p_Status := '0';
p_Retorno := SQLERRM;
END;
我只希望过程 p_reproc_tickets 能够执行过程 p_Qtd_ticket_dia 和 p_Qtd_ticket_mes。这就是完整的错误:
Error: PLS-00201: identifier 'P_QTD_TICKET_DIA' must be declared
Line: 17
Text: p_Qtd_ticket_dia(l_Cod_loja, l_p_Data, l_p_Data);
Error: PL/SQL: Statement ignored
Line: 17
Text: p_Qtd_ticket_dia(l_Cod_loja, l_p_Data, l_p_Data);
Error: PLS-00201: identifier 'P_QTD_TICKET_MES' must be declared
Line: 19
Text: p_Qtd_ticket_mes(l_Cod_loja, l_p_mes);
Error: PL/SQL: Statement ignored
Line: 19
Text: p_Qtd_ticket_mes(l_Cod_loja, l_p_mes);
感谢所有试图帮助我的人。
过程 p_Qtd_ticket_dia 和 p_Qtd_ticket_mes 仅存在于包内。所以我只是添加了这样的包名称:
CREATE OR REPLACE PROCEDURE p_reproc_tickets(p_Dta_Processo IN OUT DATE,
p_Cod_Loja_Ini IN OUT NUMBER,
p_Status OUT VARCHAR2,
p_Retorno OUT VARCHAR2) IS
l_Cod_loja number;
l_p_Data date;
l_p_Mes number;
BEGIN
l_Cod_loja := p_Cod_Loja_Ini;
l_p_Data := p_Dta_Processo;
l_p_Mes := To_Number('1' || To_Char(Trunc(p_Dta_Processo), 'RRMM'));
**etl.pk_vendas.**p_Qtd_ticket_dia(l_Cod_loja, l_p_Data, l_p_Data);
**etl.pk_vendas.**P_Qtd_ticket_mes(l_Cod_loja, l_p_Mes);
EXCEPTION
WHEN OTHERS THEN
p_Status := '0';
p_Retorno := SQLERRM;
END;