下面语句在sql window中调试通过。但在存储过程中调试不通过。 分数不够还可在加 select tmp.treeno,tmp.treename,tmp.linkstate,tmp.linkfile, ( (select count(*) from t_e_sys_treelimit where groupuser='管理员' and groupuserstyle=1 and treeno like tmp.treeno || '%' and length(treeno)=length(tmp.treeno)+3) + (select count(*) from t_e_sys_treelimit where groupuser='admin' and groupuserstyle=0 and treeno like tmp.treeno || '%' and length(treeno)=length(tmp.treeno)+3) + (select count(*) from t_e_sys_treelimit where groupuser='0000000000000019' and groupuserstyle=2 and treeno like tmp.treeno || '%' and length(treeno)=length(tmp.treeno)+3) ) as nsoncount from ( select B.treeno,treename,linkstate,linkfile,sum(limit) as limit from ( select D.treeno,treename,linkstate,linkfile,SUM(to_number(SUBSTR(treelimit,1,1))) AS limit from t_e_sys_treelimit D,T_E_SYS_TREEBASE E where groupuser='管理员' and groupuserstyle=1 and D.treeno like '010%' and length(D.treeno)=length('010')+3 and D.treeno=E.treeno group by D.treeno,treename,linkstate,linkfile union-------------------------- select D.treeno,treename,linkstate,linkfile,SUM(to_number(SUBSTR(treelimit,1,1))) AS limit from t_e_sys_treelimit D,T_E_SYS_TREEBASE E where groupuser='admin' and groupuserstyle=0 and D.treeno like '010%'and length(D.treeno)=length('010')+3 and D.treeno=E.treeno group by D.treeno,treename,linkstate,linkfile union------------------------------ select D.treeno,treename,linkstate,linkfile,SUM(to_number(SUBSTR(treelimit,1,1))) AS limit from t_e_sys_treelimit D,T_E_SYS_TREEBASE E where groupuser='0000000000000019' and groupuserstyle=2 and D.treeno like '010%' and length(D.treeno)=length('010')+3 and D.treeno=E.treeno group by D.treeno,treename,linkstate,linkfile ) B group by B.treeno,treename,linkstate,linkfile ) tmp order by tmp.treeno
问题出现在存储过程中 不能使用 select col1, (select count(*) from tb2 ) as col2 from tb1
确实有这个问题 用动态sql来解决 例: 10:59:07 SQL> declare 10:59:14 2 n number; 10:59:14 3 begin 10:59:14 4 execute immediate 'select (select 1 from dual) as col from dual' into n; 10:59:17 5 end; 10:59:19 6 /PL/SQL 过程已成功完成。已用时间: 00: 00: 00.63 10:59:20 SQL>
分数不够还可在加
select tmp.treeno,tmp.treename,tmp.linkstate,tmp.linkfile,
(
(select count(*) from t_e_sys_treelimit where groupuser='管理员' and groupuserstyle=1 and treeno like tmp.treeno || '%' and length(treeno)=length(tmp.treeno)+3)
+
(select count(*) from t_e_sys_treelimit where groupuser='admin' and groupuserstyle=0 and treeno like tmp.treeno || '%' and length(treeno)=length(tmp.treeno)+3)
+
(select count(*) from t_e_sys_treelimit where groupuser='0000000000000019' and groupuserstyle=2 and treeno like tmp.treeno || '%' and length(treeno)=length(tmp.treeno)+3)
)
as nsoncount
from
(
select B.treeno,treename,linkstate,linkfile,sum(limit) as limit
from
(
select D.treeno,treename,linkstate,linkfile,SUM(to_number(SUBSTR(treelimit,1,1))) AS limit
from t_e_sys_treelimit D,T_E_SYS_TREEBASE E
where groupuser='管理员' and groupuserstyle=1 and D.treeno like '010%' and length(D.treeno)=length('010')+3
and D.treeno=E.treeno
group by D.treeno,treename,linkstate,linkfile
union--------------------------
select D.treeno,treename,linkstate,linkfile,SUM(to_number(SUBSTR(treelimit,1,1))) AS limit
from t_e_sys_treelimit D,T_E_SYS_TREEBASE E
where groupuser='admin' and groupuserstyle=0 and D.treeno like '010%'and length(D.treeno)=length('010')+3
and D.treeno=E.treeno
group by D.treeno,treename,linkstate,linkfile
union------------------------------
select D.treeno,treename,linkstate,linkfile,SUM(to_number(SUBSTR(treelimit,1,1))) AS limit
from t_e_sys_treelimit D,T_E_SYS_TREEBASE E
where groupuser='0000000000000019' and groupuserstyle=2 and D.treeno like '010%' and length(D.treeno)=length('010')+3
and D.treeno=E.treeno
group by D.treeno,treename,linkstate,linkfile
) B
group by B.treeno,treename,linkstate,linkfile
) tmp
order by tmp.treeno
不能使用
select col1, (select count(*) from tb2 ) as col2 from tb1
用动态sql来解决
例:
10:59:07 SQL> declare
10:59:14 2 n number;
10:59:14 3 begin
10:59:14 4 execute immediate 'select (select 1 from dual) as col from dual' into n;
10:59:17 5 end;
10:59:19 6 /PL/SQL 过程已成功完成。已用时间: 00: 00: 00.63
10:59:20 SQL>