CREATE OR REPLACE PROCEDURE as_getInfoBy_Year(stateYear in varchar2, --要查询的年份                                              info out pag_asset.Asset_CURSOS) AS
  --声明变量
  A_ProGrameStype0 int;
  A_ProGrameStype1 int;
  A_ProGrameStype2 int;
  A_ProGrameStype3 int;
  As_Stype1        int;
  As_Stype2        int;
  temp_A           int;--用于存储 A_ProGrameStype
  temp_AS          int;--用于存储  As_Stype
  i                int;--循环初始值
BEGIN
  --变化初始化
  A_ProGrameStype0 := 0;
  A_ProGrameStype1 := 0;
  A_ProGrameStype2 := 0;
  A_ProGrameStype3 := 0;
  As_Stype1        := 0;
  As_Stype2        := 0;
  temp_A           := 0;--用于存储 A_ProGrameStype
  temp_AS          := 0;--用于存储 As_Stype
  i                := 0;--循环初始值
  for i in 1..31 loop
      stateYear:=stateYear+i;
      SELECT A_ProGrameStype,
             CASE
                 WHEN A_ProGrameStype=0
                      A_ProGrameStype0=A_ProGrameStype0+1
                 WHEN A_ProGrameStype=1
                      A_ProGrameStype1=A_ProGrameStype1+1
                 WHEN A_ProGrameStype=2
                      A_ProGrameStype2=A_ProGrameStype2+1
                 ELSE A_ProGrameStype3=A_ProGrameStype+3
             END A_ProGrameStype
      FROM LJD
  END loop;
END getInfoBy_Year
关键是 CASE 的地方,我不知道怎么学才对啊

解决方案 »

  1.   


    (
    case when 条件1 then 值1
         when 条件1 then 值2
         ......
         else 值N
    end 
    ) AS 列名(字段)就是 if... else if..else if...else...
      

  2.   

    但 if else 不如 case 效率啊
      

  3.   

    SELECT A_ProGrameStype,
      (CASE
        WHEN A_ProGrameStype=0
          A_ProGrameStype0=A_ProGrameStype0+1
        WHEN A_ProGrameStype=1
          A_ProGrameStype1=A_ProGrameStype1+1
        WHEN A_ProGrameStype=2
          A_ProGrameStype2=A_ProGrameStype2+1
        ELSE A_ProGrameStype3=A_ProGrameStype+3
        END)AS A_ProGrameStype
    可是这样写也不对啊
      

  4.   

    SELECT CASE WHEN max([总数])is Null THEN 1 ELSE max([总数])+1 END FROM 表名
    就好像这个案例
    使用了CASE  , WHEN就是当什么状态或符合某种条件就执行
                 Then 以后的处理就好像 if(条件){
             //符合处理
          }else
          {
             //不符合处理
          }      
     反过来看就是
          When 条件 
          Then 
              // 符合条件处理
          ELSE
              // 不符合条件处理