이병기 님께서 쓰시길::
> 안녕하세요...
>
> 여러분들께서 많이 도와주신 덕분에 작업도 슬슬 마무리단계로 접어들고 있습니다..
> esql/cc/sunos5.6/인포믹스7.3/apache를 사용하여 개발중입니다.
>
> .. 지금 제가 당면한 문제는..
> sql의 where절을 다이나믹하게 사용하려고 합니다.
> 만일 웹에서 10가지 조건중 5가지 조건만 체크하여 where절에 덧붙여 쓰려고 합니다.
>
> sprintf(where, "where desire_kind2=%1d", desire_kind2);
> for(; searchList; searchList=qValueNext()) {
> strcpy(tmp,qValue(searchList));
> sprintf(where, "%s and %s="%s"", where, searchList, tmp);
> }
>
> 이렇게 where문자열을 다이나믹하게 만들어서 sql문장에 붙이면..
> 이런저런 오류가 발생합니다.
>
> EXEC SQL select count(*) into :records from recruit :where;
>
> 주로 329, 201번인데요.. 아마 위의 문자열로 sql문장을 만들어서 붙이는것은
> 인포믹스 esql컴파일러에서 통하지 않는 듯 합니다.
>
> 그러면.. 인포믹스에서 다른 방법으로 다이나믹sql을 작성해서 붙일 수 있는
> 방법이 있습니까?
>
> 부탁드리겠습니다..
자답입니다.
sql구문을 변수에 담아서 위에서처럼 대입시키면 오류가 발생합니다.
그래서 사방팔방으로 알아본 결과, 다음과 같은 예제를 구할 수 있었습니다.
EXEC SQL prepare pre from :sqlCmd;
EXEC SQL declare cur1 cursor for pre;
EXEC SQL open cur1;
EXEC SQL fetch next cur1 into :records;
EXEC SQL close cur1;
EXEC SQL free pre;
커서에서 sql구문이 담긴 변수를 호출하는 코드입니다.
물론 sqlCmd에 sql문장을 복사해놓는게 더 먼저이고요.
도움이 되셨기를..
참고로 esql관련 사이트는
http://tilldawn.co.kr/
http://www.informix.com/kr/
두 사이트에서 좋은 내용을 찾아볼 수있었습니다.
|