방금 ecpg 메뉴얼을 한번 뒤져 보았습니다. 그런데 IMMEDIATE 구문에 대해서는 나와 있질 않군요. pro*C 에 있는 구문인지라 ecpg 에도 있을 것으로 생각했는데 아마도 지원되지 않는것 같습니다. 다른 방법으로 바꾸어야 할 것 같습니다.
에러의 내용은 :sqlcmd 이렇게 명시적으로 casting 해 주는 구문 자체가 지원되질 않는 것 같습니다. : 연산자가 지원되지 않는다는 에러로군요. 그곳에다 바로 SQL 명령어를 적어 주는 방향으로 소스 변경을 해서 실행해 보시기 바랍니다. 저가 봐도 많이 불편하군요. :/)
::송봉준 님께서 쓰시길::
>
> 답변 감사드립니다. 헌데... 이룬 아래와 같은 에러 메시지를 출력하는데...
> immediate 문법이 잘못된건가요.???
>
> NOTICE: The ':' operator is deprecated. Use exp(x) instead.
> This operator will be removed in a future release.
> NOTICE: The ':' operator is deprecated. Use exp(x) instead.
> This operator will be removed in a future release.
> NOTICE: The ':' operator is deprecated. Use exp(x) instead.
> This operator will be removed in a future release.
> NOTICE: The ':' operator is deprecated. Use exp(x) instead.
> This operator will be removed in a future release.
> NOTICE: The ':' operator is deprecated. Use exp(x) instead.
> This operator will be removed in a future release.
> NOTICE: The ':' operator is deprecated. Use exp(x) instead.
> This operator will be removed in a future release.
> sql error 'ERROR: parser: parse error at or near ":"' in line 198.
>
>
>
> > > void dbINSERT_IN(readBuff, nbytes)
> > > char *readBuff;
> > > int nbytes;
> > > {
> > >
> > > EXEC SQL BEGIN DECLARE SECTION;
> > >
> > > char sqlcmd[500];
> > >
> > > EXEC SQL END DECLARE SECTION;
> > >
> > > char month[3];
> > >
> > > IN_INFO_DB inInfoDb;
> > >
> > > memset(&inInfoDb, 0x00, sizeof(inInfoDb));
> > > memset(month, 0x00, sizeof(month));
> > > memset(sqlcmd, 0x00, sizeof(sqlcmd));
> > >
> > > str_offset_copy_IN(&inInfoDb, readBuff, nbytes, month);
> > >
> > > EXEC SQL CONNECT TO 'test';
> > > sprintf(sqlcmd, "INSERT INTO In%s112(status,ktCode,pfCode,outktCode,outpfCode,acdTim
> e,
> > se
> > > rverTi
> > > me,ddd,telNo) VALUES(:%s, :%s, :%s, :%s, :%s, :%s, :%s, :%s, :%s)", month, inInfoDb.statusPa
> rt
> > ,
> > >
> > > inInfoDb.KTregPart, inInfoDb.chungRegPart, inInfoDb.outKTregPart, inInfoDb.outChungRegPart,
> in
> > In
> > >
> > > foDb.acdTime, inInfoDb.Servtime, inInfoDb.regionNo, inInfoDb.telNo);
> > >
> > > EXEC SQL EXECUTE IMMEDIATE :sqlcmd;
> > >
> > > EXEC SQL COMMIT;
> > >
> > > return;
> > > }
> > >
>
>
|