2011-04-06 3 views
1

패키지에 프로 시저가 있습니다.Pro * C에서 문자열 배열을 PL/SQL에 전달하십시오.

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

으로 선언하는 것이 었습니다. 예제는 패키지에 선언 된 유형이 아니기 때문에 문제가 다소 혼동스럽게 보입니다. –

+0

그렉, MyPack.MyArr.EXEC를 사용하여 선언하십시오. SQL BEGIN DECLARE SECTION; EXEC SQL my_arr MyPack.MyArr; –

+0

@ 그렉 당신은이 일을 얻을 수 있었습니까? –

0

비슷한 문제가있었습니다. 나는 C++ 배열을 전달하려고 시도했다.

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

저장 프로 시저에. 해결책은 프로 시저 매개 변수를

TYPE NameTab IS TABLE OF CHAR(10) INDEX BY BINARY_INTEGER; 
관련 문제