为什么不编译?
EXEC SQL insert into ssa (id )
select ( select max(id)
from ss s
where s.id = t.id )
from temp_sca t
where not exists
(select null
from sca ssa 2
where ssa2.ss_id = ( select max (id)
from ss s
where s.x = t.ss_id )
and ssa2.x = t.x )
我得到错误:
选择(选择max(id)
................... 1
PCC-D-02201,当遇到以下情况时遇到符号“max”:
( ) * + ...
符号“(”代替“max”继续
我们不能在Pro * C的select子句中嵌入select吗? Solaris 10上的Oracle 11g
或者有解决方法吗?
答案 0 :(得分:0)
是的,将之前提到的转换为动态sql c-string,然后在生成的sql / c字符串上执行了EXEC SQL EXECUTE IMMEDIATE,一切都很顺利。希望其他人可能会觉得这个解决方案很有帮助。
答案 1 :(得分:0)
此处使用MAX函数,MAX应与GROUP BY一起使用。因此,当Pro * C编译器尝试编译它时,它找不到GROUP BY并抛出此编译错误。