你可以用动态SQL来实现动态sql怎么实现,,详细说说吗

解决方案 »

  1.   

    你可以用动态SQL来实现动态sql怎么实现,,详细说说吗
    一下是动态SQL,就是根据不同的I的值来执行不同的SQL,你可以根据这个思路该一下你的SQLdeclare
      -- Local variables here
      i       integer;
      sql_str varchar2(2000);
      a       varchar2(100);
    begin
      i := 0;
      if i = 0 then
        sql_str := 'select ''i is equal 0'' from dual';
      end if;
      execute immediate SQL_STR
        into A;
      dbms_output.put_line(a);
      i := 1;
      if i > 0 then
        sql_str := 'select ''i is greater than 0'' from dual';
      end if;  execute immediate SQL_STR
        into A;
      dbms_output.put_line(a);
      i := 1;
    end;
      

  2.   


    SELECT NVL(MAX(PA_LOCK_FLAG), 0) 
            FROM PA_PROGRESS_DEPT PA
           WHERE PA.PA_MONTH_STR = V_PA_MONTH_STR
             AND PA.DEPT_DISTINGUISH_NO IN
                 (SELECT HD.DEPT_DISTINGUISH_NO
                    FROM HR_DEPARTMENT HD
                   WHERE HD.DEPT_DISTINGUISH_NO IS NOT NULL
     CASE WHEN IN_DEPTNO=''
      /*在这里我想做个判断,如果传过来的参数IN_FLAF是空就用下面的sql*/
      AND HD.DEPTNO =IN_DEPTNO
    ELSE 
      /*如果传过来IN_FLAF是1就执行下面的sql*/
                     AND HD.DEPTNO IN
                         (SELECT HD.DEPTNO
                            FROM HR_DEPARTMENT HD
                           START WITH HD.DEPTNO = IN_DEPTNO
                          CONNECT BY PRIOR HD.DEPTNO = HD.PARENT_DEPT_NO))
    END