如题
我编译
SELECT 1,
                CASE
                        WHEN (1=1)  THEN 2
                        ELSE 3
                END case,
                2
  from dual;
这句话都不行。
开发环境是AIX

解决方案 »

  1.   

    有什么错误?
    是不是用了关键字case没有加引号,试这样改
    SELECT 1 aa, 
                    CASE 
                            WHEN (1=1)  THEN 2 
                            ELSE 3 
                    END bb,
                    2 cc  from dual; 
      

  2.   

    试试这个:
    SELECT 1 A,
           CASE
             WHEN (1 = 1) THEN
              2
             ELSE
              3
           END B,
           2 C
      FROM DUAL;
      

  3.   

    http://www.itpub.net/viewthread.php?tid=813181&highlight=proc%2Bcase
    在这里查到
    说是Oracle9i Release 2 版本或以后的版本才支持!
    我的版本是
    Pro*C/C++: Release 9.0.1.0.0 - Production on Tue Mar 10 11:45:06 2009
    晕了,是不是这样的。
      

  4.   

    case 为关键字,需要加引号,或换为其他的名字.SELECT 1, 
           CASE WHEN 1 = 1 THEN 2 ELSE 3 END 'case', 
           2 
    from dual; 
      

  5.   

    select 1,
           case when 1=1 then 2 else 3 end,
           2
    from dual
      

  6.   

    说错了,不用加,直接用case即可.SELECT 1, 
           CASE WHEN 1 = 1 THEN 2 ELSE 3 END case, 
           2 
    from dual; /*
    1 case 2
    1 2    2
    */
      

  7.   

    以上环境为:toad 8.53 + oracle 9i
      

  8.   

    我帮你试过了,没问题,应该不是这个语句的问题。示例程序如下:#include <stdio.h>
    #include <stdlib.h>
    EXEC SQL BEGIN DECLARE SECTION;
    VARCHAR username[20];
    VARCHAR password[20];
    VARCHAR dbname[20];
    EXEC SQL END DECLARE SECTION;
    int db_connect(char *user,char *pass,char *server)
    {
    strcpy((char *)username.arr,user);
    username.len = strlen((char *)username.arr);
    strcpy((char *)password.arr,pass);
    password.len = strlen((char *)password.arr);
    strcpy((char *)dbname.arr,server);
    dbname.len = strlen((char *)dbname.arr);
    /*EXEC SQL WHENEVER SQLERROR STOP;*/
    EXEC SQL CONNECT :username IDENTIFIED BY :password USING :dbname;return sqlca.sqlcode;
    }a;
    {
            printf("connect error\n");
    exit;
    }
    void db_disconnect()
    {
            EXEC SQL COMMIT WORK RELEASE;
    }int db_fetch()
    {
            EXEC SQL BEGIN DECLARE SECTION;
            int aa,bb,cc;
            EXEC SQL END DECLARE SECTION;        EXEC sql whenever not found goto notfound;
            exec sql whenever sqlerror goto fail;
            EXEC SQL SELECT 1,
            CASE WHEN (1=1)  THEN 2
                    ELSE 3
            END case,
            2
            into :aa,:bb,:cc from dual; 
    printf("aa=%d,bb=%d,cc=%d\n",aa,bb,cc);   //打印出结果是1,2,2
            return 1;
    notfound:
            return 0;
    fail:
            return -1;}main()
    {
    db_connect("user","pass","dbinst");db_fetch();db_disconnect();
    }
      

  9.   


    可能是这个原因。我的
    Pro*C/C++: Release 9.2.0.7.0
      

  10.   

    实践证明就是oracle客户端版本的原因。结贴!谢谢大家。