Oracle 10g에서 Pro * C를 실행 중입니다.Oracle ProC INSERT INTO VALUES ((선택 ...)
insert 문 값 절 내에서 하위 쿼리를 수행하려고합니다. 이 SQL 쿼리는 완전히 유효하며 TOAD 내에서 문제없이 실행되지만 Pro * C는 쿼리를 구문 분석하지 못합니다.
(SELECT (CREATED_FLAG || DISPLAY_ID) from TARGET t where t.TARGET_ID = :targetID) ||**".
프로 * C 컴파일러 작업을하고 모든 컴파일하고 예상대로 실행 :
EXEC SQL INSERT INTO TARGET_ATTACHMENT
(
TARGET_ID
FILENAME
)
VALUES (
:targetID,
(SELECT CREATED_FLAG from TARGET t where t.TARGET_ID = :targetID) || '.tif'
)
나는 제거합니다.
제거하지 않을 경우 : Pro * C 컴파일러가 구문 오류를 발생시킵니다.
예 : 나는 프로 *의 C는 값 내에서 subquerys이 caluse 컴파일 할 수 있기를 기대로
1>Syntax error at line 128, column 12, file d:\SVN\...\TA.pc:
1>Error at line 128, column 12 in file d:\SVN\...
1>...\TA.pc
1> (select CREATED_FLAG from target t where t.TARGET_ID = :targetID)
1>...........1
1>PCC-S-02201, Encountered the symbol "CREATED_FLAG" when expecting one of the fol
1>lowing:
1> () * + -/. @ | at, day, hour, minute, month, second, year,
이
는 문제입니다.INSERT into table1 (col1) values ((select t2.singleCol from table2 t2 where t2.priKey = :priKey))
Pro * C의 예상되는 동작입니까? 또는 values 절 내에서 하위 쿼리를 지원해야합니까?
(SELECT CREATED_FLAG || '.tif' from TARGET t where t.TARGET_ID = :targetID)
나는 내가 하위 쿼리 당신이 시도했던 방법에 추가 뭔가를 본 것 같아요 :
하위 쿼리에서 추가 한 후에 어떤 내용이 손상되었는지 보여주기 위해 단순화 된 쿼리 만 표시합니다. 실제로 20 개 이상의 필드가 TARGET_ATTACHMENT 테이블에 삽입되며, 그 중 하나만 TARGET 테이블의 정보가 필요합니다. – user297500