存储过程里使用游标

游标中用到的函数,就是前一篇文章中创建的那个函数。

另外,为了方便使用,把游标放在存储过程中,这样就可以方便地直接使用存储过程来执行游标了

create procedure UpdateHKUNo    --存储过程里面放置游标
as
begin

declare UpdateHKUNoCursor cursor    --声明一个游标,查询满足条件的数据
        for select psn_code from person where type=‘E‘ and hku_no is null
   
    open UpdateHKUNoCursor    --打开
   
    declare @noToUpdate varchar(20)    --声明一个变量,用于读取游标中的值
        fetch next from UpdateHKUNoCursor into @noToUpdate
   
    while @@fetch_status=0    --循环读取
        begin
        --print @noToUpdate
        update person set hku_no=dbo.GetExtUserHKUNo() where [email protected]
        fetch next from UpdateHKUNoCursor into @noToUpdate
        end
   
    close UpdateHKUNoCursor    --关闭
   
    deallocate UpdateHKUNoCursor    --删除
   
end

--exec UpdateHKUNo

if exists (select * from sysobjects where name= ‘UpdateHKUNo‘ and xtype =‘P‘)print ‘yse‘elseprint ‘no‘
时间: 2024-08-11 07:49:53

存储过程里使用游标的相关文章

ORACLE 11G在存储过程里面遍历游标, 调用job任务定时执行

ORACLE存储过程里游标遍历.调用job定时执行 1,第一种使用For 循环 for循环是比较简单实用的方法. 首先,它会自动open和close游标.解决了你忘记打开或关闭游标的烦恼. 其次,自动声明一个记录类型及定义该类型的变量,并自动fetch数据到这个变量. 注意C_ROW 这个变量无需要在循环外进行声明,无需为其指定数据类型.它是一个记录类型,具体的结构是由游标决定的. 这个变量的作用域仅仅是在循环体内. 最后,与该游标关联的所有记录都已经被取回后,循环无条件结束,不必判定游标的%N

ORACLE 11G在存储过程里面遍历游标, 调用job任务定时运行

ORACLE存储过程里游标遍历.调用job定时运行 1,第一种使用For 循环 for循环是比較简单有用的方法. 首先.它会自己主动open和close游标.攻克了你忘记打开或关闭游标的烦恼. 其次,自己主动声明一个记录类型及定义该类型的变量,并自己主动fetch数据到这个变量. 注意C_ROW 这个变量无需要在循环外进行声明,无需为其指定数据类型.它是一个记录类型,详细的结构是由游标决定的. 这个变量的作用域不过在循环体内. 最后,与该游标关联的全部记录都已经被取回后.循环无条件结束,不必判定

Oracle 存储过程调用返回游标的另一个存储过程。

一个扩展存储过程调用另一个存储过程,示例: 被调用存储过程:最后会返回一个游标,游标返回一个值.调用这个存储过程的存储过程同样需要获取它. procedure SearchBill --根据到货单号查询所有行号 ( P_code VARCHAR, P_UserCode varchar , P_org varchar, P_warehouse varchar, p_movetype varchar, p_billtype varchar, p_note varchar, p_isred varch

Sql server存储过程中常见游标循环用法

原文:Sql server存储过程中常见游标循环用法 用游标,和WHILE可以遍历您的查询中的每一条记录并将要求的字段传给变量进行相应的处理 DECLARE @A1 VARCHAR(10), @A2 VARCHAR(10), @A3 INT DECLARE YOUCURNAME CURSOR FOR SELECT A1,A2,A3 FROM YOUTABLENAME OPEN YOUCURNAME fetch next from youcurname into @a1,@a2,@a3 while

dblink 的源数据表结构修改后在存储过程里执行报错

原情况:A服务器表A服务器B也有一张表A服务器B上有一个存储过程要把本地的head表向A服务器表里插入数据.变更后:在A服务器表里增加了一个字段inserttime,服务器B存储过程本地表向A服务器插入时,记录插入的时间.问题修改语句如下:insert into [email protected]  select t.*,sysdate from A;这个语句单独执行没有问题.但在存储过程里执行一直报错,报值过多. 解决: 猜想可能是dblink的问题,把原来的dblink删除,重新新建一个db

MySQL在存储过程中使用游标

#在存储过程中使用游标 DROP TABLE IF EXISTS tbl; CREATE TABLE tbl( id INT NOT NULL AUTO_INCREMENT, title VARCHAR(50) NOT NULL, author VARCHAR(50) NOT NULL, PRIMARY KEY(id) ); DROP PROCEDURE IF EXISTS sp7; CREATE PROCEDURE sp7(INOUT rst VARCHAR(100), OUT rst_cod

SQL 用户定义表类型,在存储过程里使用数据类型作參数

在数据库编程里使用数据类型,能够提高代码的重用性.它们常常被使用在方法和存储过程中.使用数据类型,我们能够避免在存储过程里定义一串的參数,让人眼花缭乱,它就相当于面向对象语言里.向一个方法里传入一个对象,而该对象有各种属性,存储过程仅仅须要获取这个对象就能获取到各个參数,然后做出对应的处理.有所不同的是SQL的表类型是能够包括多条数据的.到底是怎么一回事,且看以下的样例. 1. 首先我创建了一个学生表,包括四个字段,主键是从1開始的自增长型. GO CREATE TABLE STUDENT( I

存储过程使用动态游标一例

数据表结构如下: SQL> desc record;Name        Type         Nullable Default Comments ----------- ------------ -------- ------- -------- RECORD_GUID VARCHAR2(50) Y                         DNIS        VARCHAR2(15) Y                         ANI         VARCHAR2

Oracle使用存储过程返回查询游标

如果报表逻辑非常复杂的话, 可以把报表逻辑放到存储过程里,加工一个全局临时表.前端查询的时候只查询临时表即可.只是第一次查询需要忍受加工的时间. --创建存储过程,返回SYS_REFCURSOR CREATE OR REPLACE PROCEDURE P_GET_AGENT(V_AGENT_CATE IN VARCHAR2, V_PAGE IN INTEGER, O_CURSOR OUT SYS_REFCURSOR) IS BEGIN INSERT INTO TMP_TAB_T_AGENT(AG