【发布时间】:2020-10-28 21:38:14
【问题描述】:
包编译良好,但在执行函数时,出现以下错误“'SEARCH FOR_EMP_NO' is not a procedure or has not been defined”是什么问题?我想我在 ver_emple 过程中遇到了一些问题。我必须将记录传递给它以显示示例中的输出文本,但我不知道该怎么做。
/* Cabecera o especificación del paquete */
CREATE OR REPLACE PACKAGE buscar_emple2
AS
TYPE t_reg_emple IS RECORD(emp_no emple.emp_no%TYPE,
apellido emple.apellido%TYPE,
oficio emple.oficio%TYPE,
salario emple.salario%TYPE,
dept_no emple.dept_no%TYPE
);
FUNCTION busca_por_emp_no(v_num_emple emple.emp_no%TYPE)
RETURN t_reg_emple;
FUNCTION busca_por_ape(v_apellido emple.apellido%TYPE)
RETURN t_reg_emple;
PROCEDURE ver_emple;
END buscar_emple2;
/* Cuerpo del paquete */
CREATE OR REPLACE PACKAGE BODY buscar_emple2
AS
vg_emple t_reg_emple;
FUNCTION busca_por_emp_no(v_num_emple emple.emp_no%TYPE)
RETURN t_reg_emple
IS
BEGIN
SELECT emp_no, apellido, oficio, salario, dept_no
INTO vg_emple
FROM emple
WHERE emp_no = v_num_emple;
RETURN vg_emple;
ver_emple;
END busca_por_emp_no;
FUNCTION busca_por_ape(v_apellido emple.apellido%TYPE)
RETURN t_reg_emple
IS
BEGIN
SELECT emp_no, apellido, oficio, salario, dept_no
INTO vg_emple
FROM emple
WHERE apellido = v_apellido;
RETURN vg_emple;
ver_emple;
END busca_por_ape;
PROCEDURE ver_emple
IS
BEGIN
DBMS_OUTPUT.PUT_LINE(vg_emple.emp_no|| '=======' ||vg_emple.apellido|| '=======' ||
vg_emple.oficio|| '=======' ||vg_emple.salario|| '=======' ||vg_emple.dept_no);
END ver_emple;
END buscar_emple2;
EXECUTE buscar_emple2.busca_por_emp_no(7839);
EXECUTE buscar_emple2.busca_por_ape('SALA');
【问题讨论】:
-
谁知道?没有任何东西 - 在您发布的代码中 - 表明 SEARCH FOR_EMP_NO 曾经被使用过,所以这真的是一个谜。
-
我认为错误消息是通过翻译器传递的,busca_por_emp_no = searchfor emp no
标签: sql oracle plsql-package