1
Oracle (11g) 데이터베이스를 채우는 C++ 애플리케이션을 개발 중입니다. 이 데이터베이스는 다음과 같은 서명 패키지가 있습니다C++과 OCCI를 사용하여 CLOB로 작성하기
FUNCTION SAVE_CONF
(I_USER IN VARCHAR2
,I_APP IN VARCHAR2
,I_CONTEXT IN VARCHAR2
,O_CFG OUT SYS_REFCURSOR --CLOB
,O_ERROR_MSG OUT VARCHAR2
)
RETURN NUMBER;
그러나, 내가 O_CFG에 액세스 refcursor 내 응용 프로그램에서 수 없습니다. 이것이 내 SQL 문을 정의하는 방법입니다.
OraStmt->setSQL("BEGIN :1 := SCHM.PCK.SAVE_CONF(:2,:3,:4,:5,:6); END;");
OraStmt->registerOutParam(1, OCCIINT);
OraStmt->setString(2, User.GetBuffer(0));
OraStmt->setString(3, App.GetBuffer(0));
OraStmt->setString(4, Context.GetBuffer(0));
OraStmt->registerOutParam(5,OCCICLOB);
OraStmt->registerOutParam(6,OCCISTRING,32767);
OraStmt->setAutoCommit(FALSE);
OraStmt->executeQuery();
그러나 다섯 번째 인수 데이터 형식을 정의 할 수 없습니다. OCCICURSOR, OCCIREF 및 기타 여러 데이터 유형을 사용하려고 이미 시도했습니다.
executeQuery()
명령을 수행하면 oracle :: occi :: SQLException이 ORA-6550으로 처리됩니다. 이 ORA는 인수 유형이 일치하지 않음을 나타냅니다.
이전에 CLFC에 글을 쓰면서 일했지만 REFCURSOR에서는 결코 사용하지 않았습니다.