IF嵌套SQL问题

想问一下,下面那样的IF语句应该怎么写,能让里面的第二个IF语句能生效呢?,仅限于筛选B表的SQL语句,求大佬帮解决

         SELECT *

           FROM DUAL   A

          WHERE 1 = 1

             ${IF(LEN(AA)= 0 ,

                  "AND ROWNUM   = (SELECT ROWNUM 

                                    FROM DUAL B

                                   WHERE 1 = 1

                                     AND ROWID   = '"+AA+"'

                                     IF(LEN(BB)=0,"AND ROWNUM = 1","AND ROWNUM = '"+BB+"'" )

                               ")}

             ,'')

FineReport xingcheng1226 发布于 2022-12-23 10:32 (编辑于 2022-12-23 15:39)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
ashuweiwenLv5见习互助
发布于2022-12-23 11:20(编辑于 2022-12-23 16:23)

帆软里的动态语句,函数是不能被""双引号包起来的,所以你第二段的AA+"'这里要用双引号回收,变成AA+"'",然后用+连接if语句,if写完之后后面没有sql语句了,所以最后那个双引号要删掉

${IF(LEN(AA)= 0 

    ,"SELECT SYSDATE 

              FROM DUAL"

    ,"SELECT *

              FROM DUAL   

             WHERE 1 = 1

                  AND ROWNUM   = '"+AA+"'"+

               IF(LEN(BB)=0,"AND ROWNUM = 1","AND ROWNUM = '"+BB+"'")

                   )}

修改后新语句:

SELECT * FROM DUAL   A

 WHERE 1 = 1

${IF(LEN(AA)= 0 ,'',

"AND ROWNUM   = (SELECT ROWNUM FROM DUAL B

    WHERE 1 = 1

  AND ROWID   = '"+AA+"'"+

    IF(LEN(BB)=0,"AND ROWNUM = 1)","AND ROWNUM = '"+BB+"')"))}

  • xingcheng1226 xingcheng1226(提问者) 我刚才表达错了,我已更新问题,麻烦大佬再看一下呢
    2022-12-23 15:34 
最佳回答
0
用户k6280494Lv6资深互助
发布于2022-12-23 10:37(编辑于 2022-12-23 10:44)

${IF(LEN(AA)=0,"SELECT SYSDATE 

              FROM DUAL",  IF(LEN(BB)=0,"

SELECT *

              FROM DUAL   

             WHERE

ROWNUM = 1","

SELECT *

              FROM DUAL   

             WHERE

ROWNUM = 2"))}

  • 3关注人数
  • 1335浏览人数
  • 最后回答于:2022-12-23 16:23
    请选择关闭问题的原因
    确定 取消
    返回顶部