当前位置:首页 » 存储配置 » 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就不要用游标循环了

热点内容
安卓手机如何使用手写功能 发布:2024-10-22 23:19:16 浏览:351
手机壁纸上传 发布:2024-10-22 23:13:51 浏览:772
oracle数据库迁移方案 发布:2024-10-22 23:10:53 浏览:384
七牛云存储java上传 发布:2024-10-22 23:10:49 浏览:236
kvm编译原理 发布:2024-10-22 22:57:41 浏览:441
qq密码情侣改成什么最好 发布:2024-10-22 22:55:48 浏览:809
linux安装cuda 发布:2024-10-22 22:32:07 浏览:487
编译和链接的键 发布:2024-10-22 22:21:01 浏览:115
java数组的实现 发布:2024-10-22 22:18:15 浏览:330
python定义字符串数组 发布:2024-10-22 22:14:26 浏览:605