【发布时间】:2017-08-27 05:07:32
【问题描述】:
我在包头中声明了我的类型:
file_2.sql
CREATE OR REPLACE PACKAGE MY_UTILS
IS
TYPE VECTOR IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
TYPE MATRIX IS TABLE OF VECTOR INDEX BY PLS_INTEGER;
PROCEDURE PRINT_MATRIX(p_matrix IN MATRIX);
END MY_UTILS;
我的打印矩阵程序
PROCEDURE PRINT_MATRIX(p_matrix IN MATRIX) IS
BEGIN
DBMS_OUTPUT.PUT_LINE('printing matrix..');
END PRINT_MATRIX;
PRINT_MATRIX 过程执行简单的DBMS_OUTPUT.PUT_LINE 来打印矩阵;当我尝试使用我的MY_UTILS.PRINT_MATRIX(v_matrix) 时,我得到了错误:
PLS-00306:调用中的参数数量或类型错误 'PRINT_MATRIX'
在我的另一个.sql 文件中,我还声明了与包中相同的 MATRIX 类型。
file_1.sql
set serveroutput ON;
DECLARE
TYPE VECTOR IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
TYPE MATRIX IS TABLE OF VECTOR INDEX BY PLS_INTEGER;
v_matrix MATRIX;
BEGIN
--populate matrix, printing it works with 2 FOR LOOPS
MY_UTILS.PRINT_MATRIX(v_matrix); -- error
END;
【问题讨论】:
-
请发布您的
PRINT_MATRIX过程的样子,因为该错误与其调用时的错误参数类型有关(不是您在整个包或其他 sql 文件中声明的类型) -
@Veverke 我只是将其重写为仅打印一个字符串,但仍然出现相同的错误。
-
@AlexPoole 我刚刚将 TYPE 声明从我的
file_1.sql(我有一个匿名块)复制粘贴到我创建包的file_2.sql。 v_matrix 在匿名块中被声明为 MATRIX,就像我的问题的最后几行一样。
标签: sql database oracle plsql procedure