加入收藏 | 设为首页 | 会员中心 | 我要投稿 武汉站长网 (https://www.027zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle – 如何从游标中获取值到变量?

发布时间:2021-02-21 16:47:05 所属栏目:百科 来源:网络整理
导读:我在从游标中获取值到变量时遇到问题: create or replace procedure projectinfo(num clubs.clubid%type) as--identify variablesp_cln clubs.clubname%type;p_projn projects.projectname%type;p_projnum number;p_taskn tasks.taskname%type;p_tasknum

我在从游标中获取值到变量时遇到问题:

create or replace 
procedure projectinfo(num clubs.clubid%type) 
as
--identify variables
p_cln clubs.clubname%type;
p_projn projects.projectname%type;
p_projnum number;
p_taskn tasks.taskname%type;
p_tasknum number;

cursor cur is 
select c.clubname,p.projectname,t.taskname 
from clubs c join projects p on  c.clubid=p.clubid
join tasks t on t.projectid=p.projectid
where c.clubid=num;
--I have checked the above cursor and it's worked fine!!!
begin
p_projnum:=0;
p_tasknum:=0;

open cur;

loop

fetch cur into p_cln,p_projn,p_taskn;
dbms_output.put_line(p_cln|| ' ' ||p_projn|| ' ' || p_taskn);
-- the above command does not print variable values!!!
exit when cur%notfound;

p_projnum:=p_projnum+1;

dbms_output.put_line(' ************************ ');
dbms_output.put_line(' club name : ' ||p_cln);
dbms_output.put_line( ' project ' ||p_projnum|| ' ' || p_projn);

loop   
p_tasknum:=p_tasknum+1;
dbms_output.put_line('Task: ' ||p_tasknum|| ' '  || p_taskn);

fetch cur into p_cln,p_taskn;
exit when cur%notfound;
end loop;
end loop;
close cur;
end projectinfo;

我检查了我的光标,它包含了我需要的所有值.我的程序编译FINE但不打印任何输出!

解决方法

您使用什么工具来运行程序?默认情况下,大多数工具不会为dbms_output分配缓冲区来写入,也不会显示写入dbms_output的任何内容.这就是为什么你永远不会依赖dbms_output来获得任何真正的代码.

如果您使用的是SQL * Plus,则需要在执行过程之前启用serveroutput

SQL> set serveroutput on;
SQL> exec projectinfo( <<some number>> );

如果您使用的是GUI,GUI几乎肯定会有一种方法来启用dbms_output.但对于不同的应用来说,这将是非常不同的.例如,在SQL Developer中,您需要确保DBMS输出窗口可见,单击绿色的“加号”图标,然后选择连接以启用dbms_output.

(编辑:武汉站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读