BDE连接ORACLE817数据库。 
Query1的sql直接设置如下代码: 
select TASKNAME,decode(TASKTYPE,'1','数据转换任务','质量分析报') , decode(TASKFREQUENCE,'0','一次性任务','1','每天任务','2','每星期任务','3','每月任务','4','每季度任务','每年任务') from TASK 
提示如下错误: 
project project1.exe raised exception class EDBEnginerError with message 'Capability not supported.'.process stopped use ste or run to continue. 用case when 的主要代码如下: 
close; 
sql.Clear ; 
DatabaseName:=Mainfrm.Exchange_DB.DatabaseName; 
sql.Add('select TASKNAME,'); 
sql.Add(' CASE WHEN TASKTYPE='+Quotedstr('1') +' then '+Quotedstr('数据转换任务')+' end from TASK ' ); 
得到的错误提示: 
project project1.exe raised exception class EDBEngineError with message 'Invalid user of keyword.Token :WHEN linde Number:2'. process stopped .Use Step or Run to contine. 以前调用to_date函数没问题!

解决方案 »

  1.   

    Oracle DECODE 语句和 Microsoft SQL Server CASE 表达式都执行条件测试。当 test_value 中的值符合下列任何表达式时,就会返回相关的值。如果不符合,则返回 default_value。如果没有指定 default_value,且不符合任何表达式,则 DECODE 和 CASE 返回 NULL。下面给出了语法以及一个转换的 DECODE 命令的示例。 
    Oracle
    DECODE (test_value,
    expression1, value1
    [[,expression2, value2] [U]]
    [,default_value]
    )CREATE VIEW STUDENT_ADMIN.STUDENT_GPA
    (SSN, GPA)
    AS SELECT SSN, ROUND(AVG(DECODE(grade
    ,'A', 4
    ,'A+', 4.3
    ,'A-', 3.7
    ,'B', 3
    ,'B+', 3.3
    ,'B-', 2.7
    ,'C', 2
    ,'C+', 2.3
    ,'C-', 1.7
    ,'D', 1
    ,'D+', 1.3
    ,'D-', 0.7
    ,0)),2)
    FROM STUDENT_ADMIN.GRADE
    GROUP BY SSN
    Microsoft SQL ServerCASE input_expression
    WHEN when_expression THEN result_expression
    [[WHEN when_expression THEN result_expression] [...]]
    [ELSE else_result_expression]
    ENDCREATE VIEW STUDENT_ADMIN.STUDENT_GPA
    (SSN, GPA)
    AS SELECT SSN, ROUND(AVG(CASE grade
    WHEN 'A' THEN 4
    WHEN 'A+' THEN 4.3
    WHEN 'A-' THEN 3.7
    WHEN 'B' THEN 3
    WHEN 'B+' THEN 3.3
    WHEN 'B-' THEN 2.7
    WHEN 'C' THEN 2
    WHEN 'C+' THEN 2.3
    WHEN 'C-' THEN 1.7
    WHEN 'D' THEN 1
    WHEN 'D+' THEN 1.3
    WHEN 'D-' THEN 0.7
    ELSE 0
    END),2)
    FROM STUDENT_ADMIN.GRADE
    GROUP BY SSN
      

  2.   

    楼上的兄弟我知道decode,case when 用法的,关键是我的SQL在D中执行不过去呀???