存储过程的dbms_output.put_line问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储过程的dbms_output.put_line问题相关的知识,希望对你有一定的参考价值。

begin
select a.id,a.no,a.name,a.age from u_info a;
end;
--比如上面这个块 查询出4个字段,然后用dbms_output.put_line打印出来,应该如何写dbms_output.put_line? 注意这个语句会返回多行!

SQL> DECLARE
2 -- 定义游标.
3 CURSOR c_test_main IS
4 SELECT id, value FROM test_main;
5 BEGIN
6 FOR test_rec IN c_test_main
7 LOOP
8 dbms_output.put_line(test_rec.value);
9 END LOOP;
10 END;
11 /
ONE
TWO
THREE

PL/SQL 过程已成功完成。

上面这个例子, 查询了 2列, 但是仅仅 dbms_output.put_line 其中的一列。
你可以参考着修改修改。

查询 4列, 输出 4列。 就可以了。
参考技术A 游标,循环打印。追问

能说具体点不? 比如游标怎么弄?

追答

参考上一个答案。

oracle存储过程学习

*: 存储过程创建

1. 输出查询结果(dbms_output.put_line(‘用户名为:‘||u_name);)

create or replace procedure p002test
is
u_name varchar2(100);
begin
select user_name into u_name from t_user;
dbms_output.put_line(‘用户名为:‘||u_name);
end p002test;

2. 简单循环(for xx in list loop xxxxx end loop)

create or replace procedure p002test
is
cursor u_cursor is select user_name, user_remark from t_user;
begin
for u_record in u_cursor loop
dbms_output.put_line(u_record.user_name||‘: ‘||u_record.user_remark);
end loop;
end p002test;

3. 传递参数,使用简单异常(当需要输出参数的时候,使用out,或者in out,默认为in)

create or replace procedure p002test(p_user_id in number, p_user_password in varchar2)
is
begin
update t_user set user_password=p_user_password where user_id = p_user_id;
commit;
exception
when others then
dbms_output.put_line(‘修改失败,回滚。‘);
rollback;
end p002test;

4. 异常信息打印(sqlcode: 异常码,sqlerrm:异常详细)

create or replace procedure p002test(p_user_id in number, p_user_password in varchar2)
is
begin
update t_user set user_password=p_user_password where user_id = p_user_id;
commit;
exception
when others then
dbms_output.put_line(‘修改失败,回滚。errorCode:‘ || sqlcode || ‘ errorText:‘ || substr(sqlerrm,1,200));
rollback;
end p002test;

**: 存储过程调用

1.

begin
p002test();
end;

2.

call p002test();
call p002test(1, ‘123‘);

***: 存储过程删除

drop procedure 存储过程名字;

 

以上是关于存储过程的dbms_output.put_line问题的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL中测试存储过程,如何立即输出DBMS_OUTPUT的语句。

dbms_output.put_line 在存储过程的 Cursor For 循环内不起作用

oracle存储过程学习

oracle存储过程如何输出信息

oracle 10.2.0 如何在plsql 里设置 dbms_output.put_line 打印长度

数据库_存储过程简介(oracle版)