CREATE OR REPLACE PACKAGE emp_package
IS
TYPE emp_table_type IS TABLE OF emp%ROWTYPE
INDEX BY BINARY_INTEGER;
PROCEDURE read_emp_table (p_emp_table OUT emp_table_type);
END emp_package;CREATE OR REPLACE PACKAGE BODY emp_packageIS
PROCEDURE read_emp_table (p_emp_table OUT emp_table_type)
IS
I BINARY_INTEGER := 0;
BEGIN
FOR emp_record IN ( SELECT * FROM emp ) LOOP
P_emp_table(i) := emp_record;
I := I + 1;
END LOOP;
END read_emp_table;
END emp_package;
报错如下:Compilation errors for PACKAGE SCOTT.EMP_PACKAGEError: PLS-00103: Encountered the symbol "CREATE"
Line: 8
Text: CREATE OR REPLACE PACKAGE BODY emp_package如果我分开执行的话,就会发现包体没有了,只有声明啊!
IS
TYPE emp_table_type IS TABLE OF emp%ROWTYPE
INDEX BY BINARY_INTEGER;
PROCEDURE read_emp_table (p_emp_table OUT emp_table_type);
END emp_package;CREATE OR REPLACE PACKAGE BODY emp_packageIS
PROCEDURE read_emp_table (p_emp_table OUT emp_table_type)
IS
I BINARY_INTEGER := 0;
BEGIN
FOR emp_record IN ( SELECT * FROM emp ) LOOP
P_emp_table(i) := emp_record;
I := I + 1;
END LOOP;
END read_emp_table;
END emp_package;
报错如下:Compilation errors for PACKAGE SCOTT.EMP_PACKAGEError: PLS-00103: Encountered the symbol "CREATE"
Line: 8
Text: CREATE OR REPLACE PACKAGE BODY emp_package如果我分开执行的话,就会发现包体没有了,只有声明啊!
IS
TYPE emp_table_type IS TABLE OF emp%ROWTYPE
INDEX BY BINARY_INTEGER;
PROCEDURE read_emp_table (p_emp_table OUT emp_table_type);
END emp_package;
/
CREATE OR REPLACE PACKAGE BODY emp_packageIS
PROCEDURE read_emp_table (p_emp_table OUT emp_table_type)
IS
I BINARY_INTEGER := 0;
BEGIN
FOR emp_record IN ( SELECT * FROM emp ) LOOP
P_emp_table(i) := emp_record;
I := I + 1;
END LOOP;
END read_emp_table;
END emp_package;
/这样不可以吗?
编译是通过了,但是我在plsql里面看不到包里面的存储过程的内容,而且我执行查询语句的时候报如下错误:
SQL> select scott.emp_package.read_emp_table from dual;
select scott.emp_package.read_emp_table from dual
ORA-00904: "SCOTT"."EMP_PACKAGE"."READ_EMP_TABLE": invalid identifier
select * from user_objects where OBJECT_TYPE = 'PROCEDURE';
tmp_tbl read_emp_table.emp_table_type;
begin
emp_package.read_emp_table(tmp_tbl);
end;
/