2011-04-06 88 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;