오라클 프로시저를 c++ ADO 소스상에서 실행하면 00900 SQL문 부적합 에러가 뜹니다. 0 0 5,981

by 임동현 [PL/SQL] Oracle PL/SQL ADO procedure 프로시저 exec [2020.01.03 17:46:49]


인자가 없고 몸체 부분 (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 함수에 들어가는 인자가 잘못됐나요?

해당 함수에서 프로시저가 아닌 쿼리 실행문을 돌리면 잘 됩니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입