本帖最后由 iquwming 于 2011-08-15 09:34:14 编辑

解决方案 »

  1.   

    SELECT *
      FROM (SELECT T1.NODE,
      NVL(T1.PARENT, T1.THEMECODE) PARENT,
      T1.ALIASNAME,
      DECODE(T1.LAYERTYPE, 'UnKnown', 'FOLDER', 'LAYER') IMG,//如果这一句的值为LAYER
      T1.THEMECODE,
      T1.TABLENAME,
      T1.LLEVEL,
      T1.THEMEID,
      T1.SOURCEURI,
      T1.INFORMATION,
      T1.LAYERTYPE,
      T1.FULLCODE
      FROM V_GA_DATA_BASIC T1
      WHERE T1.STDCODE = ?
      AND T1.THEMECODE = ?
      AND T1.LLEVEL = ?
      AND ((DECODE(T1.LAYERTYPE, 'UnKnown', 'FOLDER', 'LAYER') = 'LAYER' and T1.NODE IN//那么整个sql连上这一句执行,否则去掉这一句
      (SELECT LAYERCODE FROM M_USER_LAYER WHERE USERID = ?))
      or (DECODE(T1.LAYERTYPE, 'UnKnown', 'FOLDER', 'LAYER') <> 'LAYER'))
      ORDER BY T1.MORDER)
     WHERE PARENT = ?;
      

  2.   

    SELECT *
      FROM (SELECT T1.NODE,
      NVL(T1.PARENT, T1.THEMECODE) PARENT,
      T1.ALIASNAME,
      DECODE(T1.LAYERTYPE, 'UnKnown', 'FOLDER', 'LAYER') IMG,//如果这一句的值为LAYER
      T1.THEMECODE,
      T1.TABLENAME,
      T1.LLEVEL,
      T1.THEMEID,
      T1.SOURCEURI,
      T1.INFORMATION,
      T1.LAYERTYPE,
      T1.FULLCODE
      FROM V_GA_DATA_BASIC T1
      WHERE T1.STDCODE = ?
      AND T1.THEMECODE = ?
      AND T1.LLEVEL = ?
      -- 此处修改
      AND ( T1.LAYERTYPE = 'UnKnown'
           OR T1.NODE IN  (SELECT LAYERCODE FROM M_USER_LAYER WHERE USERID = ?)
           )
      ORDER BY T1.MORDER)
     WHERE PARENT = ?;