1
我被這個錯誤困住了,真的不知道如何解決它。也許我以不正確的方式傳遞數組?PLS-00306:調用'OUTPUT_ARRAY'時參數的數量或類型錯誤
這是主要的sql文件。
DECLARE
v_array_length NUMBER := &v_array_length;
BEGIN
DECLARE
TYPE number_array_type IS TABLE OF NUMBER(6, 2) INDEX BY BINARY_INTEGER;
v_array NUMBER_ARRAY_TYPE;
BEGIN
--Isvediams
IOPACKAGE.OUTPUT_MESSAGE('Original array:');
--Sugeneruoja atsitiktinius array elementus is intervalo [1, 1000]
FOR i IN 1..v_array_length LOOP
v_array(i) := SYS.DBMS_RANDOM.VALUE(1, 1000);
END LOOP;
IOPACKAGE.OUTPUT_ARRAY(v_array);
END;
END;
這是IOpackage SQL文件
CREATE OR REPLACE PACKAGE IOpackage IS
l_message VARCHAR2(100);
PROCEDURE output_message(l_message IN VARCHAR2);
TYPE number_array_type IS TABLE OF NUMBER(6, 2) INDEX BY BINARY_INTEGER;
PROCEDURE output_array(v_array NUMBER_ARRAY_TYPE);
END IOpackage;
,這是IOpackage_body文件。
CREATE OR REPLACE PACKAGE BODY IOpackage IS
PROCEDURE output_message(l_message IN VARCHAR2) IS
BEGIN
DBMS_OUTPUT.PUT_LINE(l_message);
END output_message;
PROCEDURE output_array(v_array IN NUMBER_ARRAY_TYPE) IS
BEGIN
FOR i IN 1..v_array.COUNT LOOP
DBMS_OUTPUT.PUT(v_array(i) || ' ');
END LOOP;
DBMS_OUTPUT.PUT_LINE('');
END output_array;
END IOpackage;
謝謝,這解決了我的問題。 – Vytaus
我知道這是一個相當古老的答案,但您是否有機會知道如何在不指定精確的「表格」類型的情況下進行相同的調用?有沒有可以採用哪種策略來實現動態綁定?我也在考慮語法的早期綁定類型表達式(類似'%ROWTYPE') –
@EduardDumitru從ADA繼承的PL/SQL的設計原理是(幾乎)所有東西都是顯式的,所以默認答案是可以的不要用「純粹的」PL/SQL來實現(假設我猜對了你的「問題」)。 (我不會在沒有細節的情況下進入動態PL/SQL的兔子洞。)但是,也許你可以應用[遊標變量](http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/ static.htm#LNPLS00605)或[對象類型](http://docs.oracle.com/cd/E11882_01/appdev.112/e11822/adobjplsql.htm#ADOBJ070)到您的問題?如果你認爲你有一個真正的問題,那麼請問! – user272735