数码资讯
Oracle调用另一个存储过程,该过程返回一个存储过程中的游标。
第一个是返回的游标是特定表或视图的数据,例如: SQL代码: 复制代码代码如下所示: 创建或替换程序(p_testa presult出sys_refcursor ) 作为 开始 打开presult为SELECT * FROM用户; 最后p_testa; 用户是数据库中的表,打电话时只声明一个表式型:
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
第一个是返回的游标是特定表或视图的数据,例如:
SQL代码:
复制代码代码如下所示:
创建或替换程序(p_testa
presult出sys_refcursor
)
作为
开始
打开presult为SELECT * FROM用户;
最后p_testa;
用户是数据库中的表,打电话时只声明一个表式型:
SQL代码:
复制代码代码如下所示:
创建或替换程序p_testb
作为
varcursor sys_refcursor;
R用户%ROWTYPE;
开始
p_testa(varcursor);
环
取varcursor为R;
退出时未varcursor %;
dbms_output.put_line(r.name);
结束循环;
最后p_testb;
在第二种情况下,我们不返回表的所有列,可能只有一列或两列,例如:
SQL代码:
复制代码代码如下所示:
创建或替换程序(p_testa
presult出sys_refcursor
)
作为
开始
选择ID开放presult,名字从用户;
最后p_testa;
这里我们只返回用户表的ID、名称的两个列,并且在调用时必须做出相应的更改:
SQL代码:
复制代码代码如下所示:
创建或替换程序p_testb
作为
varcursor sys_refcursor;
光标tmpcursor选择ID,名字从用户那里rownum = 1;
R tmpcursor %ROWTYPE;
开始
p_testa(varcursor);
环
取varcursor为R;
退出时未varcursor %;
dbms_output.put_line(r.id);
结束循环;
最后p_testb;
与以往不同的是,我们声明一个游标类型变量tmpcursor。注意,tmpcursor结构必须符合由存储过程返回的游标结构p_testa,否则会出现错误。在同样的方式,免费电话可以实现只要两游标类型都按照相同的结构。
SQL代码:
复制代码代码如下所示:
创建或替换程序(p_testa
presult出sys_refcursor
)
作为
开始
打开presult为SELECT * FROM用户;
最后p_testa;
用户是数据库中的表,打电话时只声明一个表式型:
SQL代码:
复制代码代码如下所示:
创建或替换程序p_testb
作为
varcursor sys_refcursor;
R用户%ROWTYPE;
开始
p_testa(varcursor);
环
取varcursor为R;
退出时未varcursor %;
dbms_output.put_line(r.name);
结束循环;
最后p_testb;
在第二种情况下,我们不返回表的所有列,可能只有一列或两列,例如:
SQL代码:
复制代码代码如下所示:
创建或替换程序(p_testa
presult出sys_refcursor
)
作为
开始
选择ID开放presult,名字从用户;
最后p_testa;
这里我们只返回用户表的ID、名称的两个列,并且在调用时必须做出相应的更改:
SQL代码:
复制代码代码如下所示:
创建或替换程序p_testb
作为
varcursor sys_refcursor;
光标tmpcursor选择ID,名字从用户那里rownum = 1;
R tmpcursor %ROWTYPE;
开始
p_testa(varcursor);
环
取varcursor为R;
退出时未varcursor %;
dbms_output.put_line(r.id);
结束循环;
最后p_testb;
与以往不同的是,我们声明一个游标类型变量tmpcursor。注意,tmpcursor结构必须符合由存储过程返回的游标结构p_testa,否则会出现错误。在同样的方式,免费电话可以实现只要两游标类型都按照相同的结构。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。