2011-04-06 87 views
1

一個字符串數組,PL/SQL我有一個程序包中的傳遞給Pro * C

create or replace package MyPack 
    type MyArr is table of varchar2(30) index by pls_integer; 

    prodecure MyProc(p in MyArr); 
end MyPack; 

,我想從PRO * C調用它。所以,我有(函數的所有其餘冷落)

char my_arr[50][30] = {0}; 

EXEC SQL EXECUTE 
    BEGIN 
    MyPack.MyProc(:my_arr); 
    END; 
END-EXEC; 

當我嘗試編譯此我得到的錯誤

「PLS-S-00418,陣列綁定類型必須PL/SQL表匹配行類型「

關於我在做什麼錯的任何想法?

回答

0

請參閱Sample Program 9: Calling a stored procedure 我認爲這適合您的描述。

+0

已經很接近了,但沒有一個實例有一個包,這似乎有所混亂的問題聲明的類型。 – 2011-04-06 11:43:47

+0

Greg,嘗試使用MyPack.MyArr.EXEC SQL BEGIN DECLARE SECTION進行聲明; EXEC SQL my_arr MyPack.MyArr; – 2011-04-06 11:59:05

+0

@Greg你有這個工作嗎? – 2011-04-12 20:23:52

0

我有一個類似的問題。我試圖通過一個C++數組,

char names[10][10] = { "Tom", "Dick", "Harry", ... }; 

存儲過程。解決的辦法是聲明的程序參數作爲

TYPE NameTab IS TABLE OF CHAR(10) INDEX BY BINARY_INTEGER;