기존에 mssql이나 mysql를 사용하다가 이번에 처음 오라클을 사용하고 있습니다.
unix c로 오라클을 연동하는 프로그램을 짜는데 처음엔 정말 난감했습니다.
결국은 proc를 사용하였고 이제는 어느정도 능숙하게 사용하게 되었습니다.
그런데 지금 큰 난관에 봉착했습니다.
proc로 PL/SQL을 호출하는 방법을 모르겠습니다.
제가 웹에서 php로는 호출을 성공했는데 도대체 proc로는 어떤식으로
접근해야 할지 모르겠습니다.
자료를 찾아보니까
EXEC SQL EXECUTE
BEGIN
ProcedureName();
END;
END-EXEC;
한다고 나와있길래 그런식으로 해보았더니
PCC-S-02345,SQLCHECK=SEMANTICS must be given when
embedded PL/SQL blocks are used
라고 나오면서 컴파일 안되더군요.
그래서 관련 내용을 찾아보니까
Makefile에서 PROCPLSFLAGS부분에 sqlcheck=semantics라고 주라고 하더군요
그래서 해보았더니 허사였습니다.
그래서
($ORACLE_HOME)/precomp/admin/pcscfg.cfg화일에
sqlcheck=semantics라고 추가해주니까
아까와 같은 메세지는 뜨지 않는데
프로시저 이름이 undeclared라고 나오네요
지금 proc에서 호출가능한지 판단하려고
간단한 프로시저를 만들었습니다.
전혀 커리는 하지 않는 PL/SQL이죠
create or replace procedure multiplier
(v_num1 IN NUMBER, v_num2 IN NUMBER, v_result OUT NUMBER) is
begin
v_result := (v_num1/v_num2)+v_num2;
end multiplier;
보시면 알겠지만 두개의 인자를 받아서 계산하고
v_result로 return하는 간단한 PL/SQL입니다.
저는 그걸
EXEC SQL AT :db_name EXECUTE
BEGIN
multiplier('8', '4', :result);
END;
END-EXEC;
이런식으로 사용했구요
방법좀 가르쳐주세요
|