当前位置:首页 » 存储配置 » oracle存储过程游标嵌套

oracle存储过程游标嵌套

发布时间: 2023-11-20 13:18:15

A. oracle在存储过程中定义游标

sql">createtableemp
(idvarchar2(10),
namevarchar2(20),
sexnumber,
tyvarchar2(20)
);

insertintoempvalues('001','Tom',1,'gcs');
insertintoempvalues('002','John',1,'dba');
insertintoempvalues('003','Jean',0,'gcs');
insertintoempvalues('004','Reid',1,'gcs');
commit;


createorreplaceprocerepro6as

cursorcris
select*
fromemp
wheresex=1
andty='gcs';
begin
forcr_resultincrloop
begin
dbms_output.put_line('ID:'||cr_result.id||'NAME:'||
cr_result.name);

end;
endloop;
endpro6;

B. oracle存储过程游标使用疑问

1、for t_name in (select ...) loop
这个是隐式游标,相当于一个结果集,隐式Cursor由系统自动打开和关闭。
exit when %notfound是配合fetch使用,没有fetch就不需要。

你第一个存储过程可以这样写:
create or replace procere d_1 is
begin
for cur in (select * from t_t) ---这个cur是隐式游标,无需定义,直接使用。
loop
dbms_output.put_line(cur.name);
end loop;
end;
/
2、使用的是标准的显式游标
a 定义游标---Cursor [Cursor Name] IS;
b 打开游标---Open [Cursor Name];
c 操作数据---Fetch [Cursor name]
d 关闭游标---Close [Cursor Name]
希望能帮到你。

C. oracle,在存储过程中能嵌套存储过程么最好举个例子。

你指的是定义的嵌套吧。这样就可以用一个procere定义符合软降工程又比较复杂的逻辑了。
procere prc_main (p_msg varchar2) is
procere prc_inner (p_msg varchar2) is
begin
dbms_output.put_line ('this is inner: ' || p_msg);
end;
begin
prc_inner(p_msg);
end;
/

不过如果你的程序规模大,还推荐你看看package的语法。

D. oracle SQL语句中的游标,函数和存储过程的区别

游标有显示游标和隐式游标之分,显示游标需要自己去定义,declare cursor(这个自己看书去吧),这样使用游标一条条地取值使用。而隐式游标针对所有的select语句都是的。
函数和存储过程几乎没有区别,只是前者有返回值,后者没有,如果后者定义了出参,那就和函数的功能是一样的了。

E. oracle中存储过程执行很长时间,用了三个游标。

不用看执行计划都知道慢了,
for c1
for c2
for c3
这种没有任何条件的三重循环的时间复杂度为C1记录数*C2记录数*C3记录数,你得尽量减少循环次数,能用sql就不要用游标循环了

热点内容
微信在安卓手机的哪个文件夹 发布:2025-01-21 18:43:52 浏览:51
sql127001 发布:2025-01-21 18:31:50 浏览:112
服务器ip是什么格式 发布:2025-01-21 18:13:13 浏览:706
oa和邮箱的初始密码在哪里改 发布:2025-01-21 18:08:46 浏览:52
如何去除pdf的加密 发布:2025-01-21 18:08:46 浏览:565
云端的服务器怎么设置ip 发布:2025-01-21 17:48:52 浏览:186
会议脚本 发布:2025-01-21 17:41:29 浏览:23
android的toast 发布:2025-01-21 17:41:28 浏览:9
linux默认安装的mysql 发布:2025-01-21 17:40:08 浏览:912
java输出数据库 发布:2025-01-21 17:35:38 浏览:963