oracle语句块begin的好处,oracle begin 语句块求助!!

匿名用户

1级

2013-03-17 回答

给你个例子,不知道是不是你说的这样

先说一下,oracle不能直接用select语句而不把查出的结果放到变量里,不过可以这样

--这个是只能输出一条记录,多了会报错,因为一个变量只能接收一个数值

declare

v_a int;

v_b number(10,2);

begin

select empno,sal into v_a,v_b from emp where empno=7369 ;

dbms_output.put_line(v_a||','||v_b);

end;

--再给你写个结果集的

declare

v_a int;

v_b number(10,2);

cursor v_cur is select empno,sal from emp order by empno;

begin

open v_cur;

loop

fetch v_cur into v_a,v_b;

exit when v_cur%notfound;

dbms_output.put_line(v_a||','||v_b);

end loop;

close v_cur;

end;

追问:

谢谢您的回答!!

我想请问您dbms_output.put_line这个只是输出到控制台还是作为结果返回,如果不是oracle还有什么其它的类的方法是输出结果的?在java端,我调用持久化层dao.queryforlist()能够得到数据吗?还有能不能不定义v_a int等,因为这张表字段是不定的我要定义查询是cursor v_cur is select * from table;我要dbms_output.put_line(一条记录);能某个变量,rowtype是不是?put_line([rowtype类型]),类似这样:)

追答:

在sqlplus和plsql里,dbms_output.put_line可以作为结果集输出,你用scott用户登录一下,执行上边的就行了,如果还是想输出,你先建一个结果集的表

dbms_output.put_line可以换成插入语句

比如那个地方可以换成

insert into 结果表 values (v_a,v_b);

commit;

你想取数时直接从结果表里调用就好了吧?

追问:

我的意思是:

fetch v_cur into v_row;

exit when v_cur%notfound;

dbms_output.put_line(v_row);

end loop;

v_row 是一条记录,前面该怎么定义它?

追答:

游标取出来的是结果集,具体到java里怎么用你查查吧,java不会

追问:

嗯, dbms_output.put_line(v_row);能打印一条表的记录吗?v_row在declare里怎么定义?还有你说的建结果集的表具体怎么弄,能说详细点吗?oracle我不很熟练。:)

追答:

一条记录用第一个那个declare的就行了啊,

如果是结果集的话把dbms_output.put_line(v_a||','||v_b)放到end loop后,输出的就是最后一条记录的呀

至于建结果集的表,就是你先建个跟你取出结果集的字段类型都一致的表create table ……,然后在游标循环过程中,把结果集输出到这个表里,到时候你要读的话直接读表就行了呀

还拿这个给你做例子

declare

v_a int;

v_b number(10,2);

cursor v_cur is select empno,sal from emp order by empno;

begin

delete from 结果集表;--每次执行前清空表里数据,避免重复

commit;--提交

open v_cur;

loop

fetch v_cur into v_a,v_b;

exit when v_cur%notfound;

insert into 结果集表 vaelus (v_a,v_b);

commit;

end loop;

close v_cur;

end;

其实这样的话,就是那个结果集里有两个字段,名字嘛,你自己起一下就好,建表你会吧?

追问:

嗯,搞不好,不过还是谢谢你!我想要的是有一些数据我要放到临时表中,然后group by查出来,你说的建个结果集表不是我想要的,因为是多人操作的,我要的就是临时表,互不干扰。要不然我就直接建张真实表,不用这么麻烦了。我想问 dbms_output.put_line(v_cur),这样能查出得一条记录吗?你那个定义v_a,v_b也不是我想要的,字段类型,名称都是不定的。

追答:

字段类型你可以自己定义啊,你把我这个改一改,换成你现有的表,执行一下就知道了,晕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值