写存储过程的思路 oracle怎么写存储过程

seosqwseo8个月前 (05-23)测评日记57

一、帮忙写个oracle 存储过程,可以返回表的所有列的结果集

与SQL Server的存储过程和函数均可以返回结果集不同的是,PL/SQL的存储过程和函数均不直接提供返回数据集的方法,但可以通过返回类型对象来实现返回数据集的效果。具体思路为:

(1)创建包头,在其中声明类型和存储过程,类型应该引用游标;

(2)创建包体,定义存储过程,执行查询,将查询得到的结果集以游标句柄的形式返回。

说明:游标分为显示游标和隐式游标,任何查询结果默认都提供隐式游标,当前方案的重点在于使用游标取得查询结果的句柄,由于游标被引用为类型,通过返回类型,即等效于(并不等同)返回数据集。

create or replace package mypackage1

type cursorType is ref cursor;

--声明存储过程,两个输入参数,一个输出参数,输出游标类型数据

procedure prcGetGlobalAddress

cur in out mypackage1.cursorType--输出参数,数据类型为引用游标的类型

create or replace package body mypackage1

procedure prcGetGlobalAddress

cur in out mypackage1.cursorType

--返回得到分页查询结果集的游标句柄

二、oracle存储过程做双层循环

1、createorreplaceproceduretest_procedureis

2、forb_curinb_cursor(a_cur.id)loop

3、--这里是你要执行的*作,比如insert到c

4、endloop;

语法是这样的,具体字段自己改一下,看你要做什么样的*作了但如果是这种插入到一张表逻辑过于简单,可以直接用等值连接。

5、语法是这样的,具体字段自己改一下,看你要做什么样的*作了但如果是这种插入到一张表逻辑过于简单,可以直接用等值连接。

三、oracle怎么写存储过程

1、你首先要了解存储过程包括哪些模块,哪些是必备的,哪些是可选的.

2、另外呢,如果有条件的话,好能找一些模板看看别人是怎么写的,再结合你们公司的实际情况,做一些适当的调整.

3、例如create or replace procedure+过程名字(变量名 in,数据类型,变量名 out数据类型)等

4、好有些实例,可以先模仿着写一写

5、等熟练之后呢,再自己按照自己的思路去写

四、mysql存储过程里怎么循环一张表

1、--存储过程名和参数,参数中in表示传入参数,out标示传出参数,inout表示传入传出参数

2、create procedure p_procedurecode(in sumdate varchar(10))

3、 declare v_sql varchar(500);--需要执行的SQL语句

4、--定义游标遍历时,作为判断是否遍历完全部记录的标记

5、 declare no_more_departments integer DEFAULT 0;

6、 SELECT barcode,barname,barnum FROM tmp_table;

7、--声明当游标遍历完全部记录后将标志变量置成某个值

8、 DECLARE CONTINUE HANDLER FOR NOT FOUND

9、 set sym=substring(sumdate,1,6);--截取字符串,并将其赋值给一个遍历

10、--连接字符串构成完整SQL语句,动态SQL执行后的结果记录集,在MySQL中无法获取,因此需要转变思路将其放置到一个临时表中(注意代码中的写法)。一般写法如下:

11、--'Create TEMPORARY Table表名(Select的查询语句);

12、 set v_sql= concat('Create TEMPORARY Table tmp_table(select aa as aacode,bb as aaname,count(cc) as ccnum from h',sym,' where substring(dd,1,8)=''',sumdate,''' group by aa,bb)');

13、 set@v_sql=v_sql;--注意很重要,将连成成的字符串赋值给一个变量(可以之前没有定义,但要以@开头)

14、 prepare stmt from@v_sql;--预处理需要执行的动态SQL,其中stmt是一个变量

15、 deallocate prepare stmt;--释放掉预处理段

16、 OPEN C_RESULT;--打开之前定义的游标

17、 FETCH C_RESULT INTO VAR1, VAR2, VAR3;--取出每条记录并赋值给相关变量,注意顺序

18、--执行查询语句,并将获得的值付给一个变量@oldaacode(注意如果以@开头的变量可以不用通过declare语句事先声明)

19、 select@oldaacode:=vcaaCode from T_sum where vcaaCode=var1 and dtDate=sumdate;

20、 update T_sum set iNum=var3 where vcaaCode=var1 and dtDate=sumdate;

21、 insert into T_sum(vcaaCode,vcaaName,iNum,dtDate) values(var1,var2,var3,sumdate);

22、 UNTIL no_more_departments END REPEAT;--循环语句结束

23、 DROP TEMPORARY TABLE tmp_table;--删除临时表

相关文章

小米(MI)EAPro好用吗

小米(MI)EAPro好用吗

很多小伙伴在关注小米(MI)EAPro怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

创维电视43H343英寸护眼防蓝光口碑好不好

创维电视43H343英寸护眼防蓝光口碑好不好

很多小伙伴在关注创维电视43H343英寸护眼防蓝光怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看...

爱百分英语点读笔万能通用扫描笔小学初中高中生课本同步幼儿童启蒙绘本书阅读翻译词典全科扫读笔学习机使用感受如何

爱百分英语点读笔万能通用扫描笔小学初中高中生课本同步幼儿童启蒙绘本书阅读翻译词典全科扫读笔学习机使用感受如何

很多小伙伴在关注爱百分英语点读笔万能通用扫描笔小学初中高中生课本同步幼儿童启蒙绘本书阅读翻译词典全科扫读笔学习机怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用...

云腾(YUNTENG)VT-888使用感受分享

云腾(YUNTENG)VT-888使用感受分享

很多小伙伴在关注云腾(YUNTENG)VT-888怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看...

小米积木质量好不好

小米积木质量好不好

很多小伙伴在关注小米积木怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

华为智选海雀智能家用摄像头3K图文测评

华为智选海雀智能家用摄像头3K图文测评

很多小伙伴在关注华为智选海雀智能家用摄像头3K怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...