在select中选择Pro * C语法

时间:2014-03-30 06:36:38

标签: syntax proc

为什么不编译?

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

或者有解决方法吗?

2 个答案:

答案 0 :(得分:0)

是的,将之前提到的转换为动态sql c-string,然后在生成的sql / c字符串上执行了EXEC SQL EXECUTE IMMEDIATE,一切都很顺利。希望其他人可能会觉得这个解决方案很有帮助。

答案 1 :(得分:0)

此处使用MAX函数,MAX应与GROUP BY一起使用。因此,当Pro * C编译器尝试编译它时,它找不到GROUP BY并抛出此编译错误。