在Oracle 10g上运行Pro * C。
我正在寻找一个插入语句values子句内的子查询。此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能够在值范围内编译子查询:
IE。
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 )
我认为我从未见过像您所尝试的那样在子查询中附加任何内容。