sql语句转换成oracle的存储过程

declare@sqlvarchar(8000)set@sql='selectNameas'+'姓名'select@sql=@sql+',max(caseSubjectw... declare @sql varchar ( 8000 )
set @sql = ' select Name as ' + ' 姓名 '
select @sql = @sql + ' , max(case Subject when ''' + Subject + ''' then Result else 0 end) [ ' + Subject + ' ] '
from ( select distinct Subject from tb) as a
set @sql = @sql + ' from tb group by name '
exec ( @sql )
这样的语句,sql中行列转换的,谁能帮忙转换成oracle的存储过程,转换好200分
展开
 我来答
北风_北
2011-11-22
知道答主
回答量:12
采纳率:0%
帮助的人:15.3万
展开全部
已经帮你转换好了
create or replace procedure xxx(x out sys_refcursor) as
n1 varchar2(4000);
n2 varchar2(100);
cursor c1
is
select distinct subject from tb;

begin
n1:='select name as 姓名';
open c1;
loop
fetch c1 into n2;
exit when c1%notfound;
n1:=n1||',max(case when subject='''||n2||''' then result else 0 end) as '||n2;
end loop;
close c1;
n1:=n1||' from tb group by name ';
OPEN x FOR n1;
end;
在sql plus中如下调用即可
var x refcursor;
exec ttt(:x);
print;
满意就多给点分哈,我也比较新手,调试了大半天才搞定。
追问
我想把结果集弄到一个表或者试图该怎么做呢?
AiDirac
2011-11-22 · TA获得超过6784个赞
知道大有可为答主
回答量:8833
采纳率:33%
帮助的人:1亿
展开全部
select WMSYS.WM_CONCAT(col_name) from dual
oralce 9以上这个可以用.
不过大小有限制.自己试试看吧.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HttpChu
2011-11-22 · TA获得超过409个赞
知道小有建树答主
回答量:375
采纳率:100%
帮助的人:357万
展开全部
你把表结构会要实现的功能给出来吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式