事情是这样的,有一个查询:WITH TB_AllGroup AS (SELECT * FROM ( SELECT A.GROUPID,A.GROUPNAME,NVL(B.PGROUPID,0) AS PGROUPID FROM SYSBASE_GROUP A LEFT JOIN SYSBASE_GROUP_RELATION B ON A.GROUPID = B.SGROUPID WHERE A.FLAG != 3 ) TA START WITH TA.GROUPID =64 CONNECT BY PRIOR TA.GROUPID = TA.PGROUPID) SELECT GROUPID as VGROUP_ID,0 AS Type FROM TB_AllGroup UNION ALL SELECT GROUPID as VGROUP_ID,1 AS Type FROM TB_AllGroup;
里面一个递归表和一个信息表,就这个语句,在plsql里面执行了是OK的10条数据,因为union all了相同的数据。但是在C#的程序访问却只有6行,很奇怪。因此我将语句拷贝到sqlplus执行,更神奇的事发生,我将拷贝的语句贴进去加分号按回车后,只返回6行,然后再拷贝进去,按回车,然后加分号,再按回车,出现结果10行,两条的语句一模一样的,为什么会出现这个情况?
附录我的执行的图:
然后我冒险重启了下,重启完了之后两种方法执行的都是返回10条,然后过一阵子,又出现上种情况,实在找不出分析的法子为啥会这样?查看了执行计划几乎都一样,就统计信息有点不一样。求支招。帮忙分析或者给下思路
里面一个递归表和一个信息表,就这个语句,在plsql里面执行了是OK的10条数据,因为union all了相同的数据。但是在C#的程序访问却只有6行,很奇怪。因此我将语句拷贝到sqlplus执行,更神奇的事发生,我将拷贝的语句贴进去加分号按回车后,只返回6行,然后再拷贝进去,按回车,然后加分号,再按回车,出现结果10行,两条的语句一模一样的,为什么会出现这个情况?
附录我的执行的图:
然后我冒险重启了下,重启完了之后两种方法执行的都是返回10条,然后过一阵子,又出现上种情况,实在找不出分析的法子为啥会这样?查看了执行计划几乎都一样,就统计信息有点不一样。求支招。帮忙分析或者给下思路
你再改写下,把TA里的查询移出来,写成with ta as(.............),tb_allgroup as(....
试试