在 Oracle 10g 上运行 Pro*C。
我希望在插入语句值子句中执行子查询。此 sql 查询完全有效,并且在 TOAD 中运行没有问题,但 Pro*C 无法解析查询。
EXEC SQL INSERT INTO TARGET_ATTACHMENT
(
TARGET_ID
FILENAME
)
VALUES (
:targetID,
( SELECT CREATED_FLAG from TARGET t where t.TARGET_ID = :targetID ) || '.tif'
)
如果我删除:
( SELECT (CREATED_FLAG || DISPLAY_ID) from TARGET t where t.TARGET_ID = :targetID ) ||**".
Pro*C 编译器正常工作,一切都按预期编译和运行。
如果我不删除: Pro*C 编译器会引发语法错误。
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,
这是一个问题,因为我希望 Pro*C 能够在值 caluse 中编译子查询:
IE。
INSERT into table1 (col1) values ( (select t2.singleCol from table2 t2 where t2.priKey = :priKey) )
这是 Pro*C 的预期行为吗?还是应该支持 values 子句中的子查询?