1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 인자가 없고 몸체 부분 ( Begin end 사이) 에 DBMS_OUTPUT.ENABLE << 이거 한 줄 넣은 프로시저를 ADO를 사용한 C++ 프로그램에서 실행하려고 하는데 00900 에러가 뜹니다. 프로시저는 다음과 같습니다. 컴파일 잘 되는 것 확인했습니다. CREATE OR REPLACE PROCEDURE KIOST.TEST IS tmpQry char (1024); rowCnt number; BEGIN DBMS_OUTPUT.ENABLE; END ; / UDL 파일로 생성한 연결 문자열을 통해 c++ 프로그램에서 오라클 DB에 접속까지는 됩니다. 그런데 프로그램에서 다음 함수로 프로시저를 실행하려고 하면 에러가 뜹니다. 프로시저 실행문은 EXEC KIOST.TEST 입니다. 이 실행문을 Toad 나 sql Developer 에서 실행하면 문제없이 잘 되는데 아래 함수의 bstrQuery 인자에 "EXEC KIOST.TEST" 을 넣고 실행하면 ORA-00900 에러가 뜹니다. BOOL CADODatabase::Execute_Trans(LPCTSTR bstrQuery) { ASSERT(m_pConnection != NULL ); ASSERT(_tcscmp(bstrQuery, _T( "" )) != 0); _variant_t vRecsAffected(0L); // m_pConnection 은 _ConnectionPtr 변수입니다. try { m_pConnection->BeginTrans(); m_pConnection-> Execute (bstrQuery, NULL , adCmdStoredProc | adCmdUnspecified); m_pConnection->CommitTrans(); return TRUE ; } catch(_com_error &e) { m_pConnection->CommitTrans(); dump_com_error(e); return FALSE ; } } |
왜 Toad 나 sql developer 에서 잘 되는 프로시저 실행문을 C++ 프로그램에서 실행하면 00900 에러가 뜨는 건가요?
Execute 함수에 들어가는 인자가 잘못됐나요?
해당 함수에서 프로시저가 아닌 쿼리 실행문을 돌리면 잘 됩니다.