存储过程小例子

插入记录并返回主键

ALTER PROCEDURE [dbo].[PrcAddMessage]
 (
    @nQueueID int,@sPatientID varchar(30),@sPatientName varchar(200),@sStudyID varchar(30),
    @sAppointmentCode varchar(30),@sAppointmentDr varchar(30),@sAppointmentDrID varchar(30),
    @dtAppointmentTime DateTime,@sRoomName varchar(30),@nState int,@nMessageID int output,@nOrder int output
 )
 AS
 begin
    declare @nStartNum int
    declare @nStep int
    declare @nCurrentOrder int
    select @nStartNum=StartNum,@nStep=Step from B_QueueTable where ID=@nQueueID
    if @nStartNum is NULL
        return
    if @nStartNum is NULL
        return
    select @nCurrentOrder=ISNULL(MAX([Order]),0) from B_MessageTable where QueueID=@nQueueID
     if (@nCurrentOrder <=0)
        begin
            set @nCurrentOrder = @nStartNum
        end
    else
        begin
            set @nCurrentOrder = @nCurrentOrder+@nStep
        end
    begin
       insert into B_MessageTable(QueueID,PatientID,PatientName,StudyID,AppointmentCode,AppointmentDr,AppointmentDrID,AppointmentTime,RoomName,[State],[Order])        values(@nQueueID,@sPatientID,@sPatientName,@sStudyID,@sAppointmentCode,@sAppointmentDr,@sAppointmentDrID,@dtAppointmentTime,@sRoomName,@nState,@nCurrentOrder)
    end
        select @nMessageID=SCOPE_IDENTITY()
        select @nOrder=[Order] from B_MessageTable where ID=@nMessageID
  end

更新记录与事务

create PROCEDURE [dbo].[ProcMove]
(
    @nMessageID int,@nMoveFlag int ,@nMoveCount int
)
AS
BEGIN
    declare @destOrder int
    declare @sourceOrder int
    declare @currentMessageID int
    declare @currentOrder int
    declare @nStep int
    declare @nQueueID int

    select @sourceOrder=[Order],@nQueueID=QueueID from B_MessageTable where ID=@nMessageID
    if @nQueueID is null
        return
    if @sourceOrder is null
        return
    select @nStep=Step from B_QueueTable where ID=@nQueueID
    if @nStep is null
        return
    if(@nMoveFlag=0)
        begin
        begin transaction
            set @[email protected]@nMoveCount
            declare Select_cursor cursor for select ID,[Order] from B_MessageTable where ([Order]>[email protected]) and ([Order]<@sourceOrder) Order by [Order] asc
            Open Select_cursor
                FETCH NEXT FROM Select_cursor INTO @currentMessageID,@currentOrder
                WHILE @@FETCH_STATUS=0
                begin
                    update B_MessageTable set [Order][email protected][email protected] where ID=@currentMessageID
                    FETCH NEXT FROM Select_cursor INTO @currentMessageID,@currentOrder
                end
            close Select_cursor
            DEALLOCATE Select_cursor
            update B_MessageTable set [Order][email protected] where ID=@nMessageID
        commit transaction
        end
    else
        begin
        begin transaction
            set @[email protected]+@nMoveCount
            declare Select_cursor cursor for select ID,[Order] from B_MessageTable where ([Order]<[email protected]) and ([Order]>@sourceOrder) Order by [Order] asc
            Open Select_cursor
                FETCH NEXT FROM Select_cursor INTO @currentMessageID,@currentOrder
                WHILE @@FETCH_STATUS=0
                begin
                    update B_MessageTable set [Order][email protected]@nStep where ID=@currentMessageID
                    FETCH NEXT FROM Select_cursor INTO @currentMessageID,@currentOrder
                end
            close Select_cursor
            DEALLOCATE Select_cursor
            update B_MessageTable set [Order][email protected] where ID=@nMessageID
        commit transaction
        end
END
时间: 2024-08-08 09:36:53

存储过程小例子的相关文章

MySQL带参数的存储过程小例子

http://wwty.iteye.com/blog/698239 mysql存储过程也提供了对异常处理的功能:通过定义HANDLER来完成异常声明的实现 语法如下: DECLARE handler_type HANDLER FOR condition_value[,...] sp_statement handler_type: CONTINUE | EXIT condition_value: SQLSTATE [VALUE] sqlstate_value | condition_name |

oracle存储过程的例子

oracle存储过程的例子 分类: 数据(仓)库及处理 2010-05-03 17:15 1055人阅读 评论(2)收藏 举报 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块.但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块.而存储过程和函数是以命名的方式存储于数据库中的.和PL/SQL程序相比.存储过程有非常多长处.详细归纳例如以下: * 存储过程和函数以命名的数据库对象形式存储于数据库其中.存储在数据库中的长处是

从一个小例子认识SQL游标

原文:从一个小例子认识SQL游标 1    什么是游标: 关系数据库中的操作会对整个行集起作用. 例如,由 SELECT 语句返回的行集包括满足该语句的 WHERE 子句中条件的所有行. 这种由语句返回的完整行集称为结果集. 应用程序,特别是交互式联机应用程序,并不总能将整个结果集作为一个单元来有效地处理. 这些应用程序需要一种机制以便每次处理一行或一部分行. 游标就是提供这种机制的对结果集的一种扩展. 游标通过以下方式来扩展结果处理: 允许定位在结果集的特定行. 从结果集的当前位置检索一行或一

laravel 数据库操作小例子

public function demo() { $res = null; //insert数据插入 //$user=array('username'=>'joy','password'=>'123456','age'=>23); //$res = DB::table('users')->insert($user); /* 数据查询 $res = DB::table('users')->where('username','joy')->get(); $res = DB:

spring小例子-springMVC+mybits整合的小例子

这段时间没更博,找房去了...   吐槽一下,自如太坑了...承诺的三年不涨房租,结果今年一看北京房租都在涨也跟着涨了... 而且自如太贵了,租不起了.. 突然有点理解女生找对象要房了..   搬家太受罪了... 今天更一下springMVC整合mybits形成最简单的网站demo. 大概效果就是这样的:左边是数据库查询结果,右边是页面访问结果: 首先,一个简单的springMVC小例子可以看这个http://www.cnblogs.com/xuejupo/p/5236448.html 这是在这

cmake 之一个小例子

cmake,比手写makefile更好的选择 安装cmake,此部分略过 一.新建一个工程 这里我是在windows下使用eclipse新建了一个c工程(PS:我一般新建一个Makefile类型的工程,这样比较干净) 二.建立必要的文件夹 我的工程目录: D:\code\cpp\cmakestudy\test>tree /f 卷 软件 的文件夹 PATH 列表 卷序列号为 0006-17B7 D:. │ .cproject │ .project │ CMakeLists.txt │ ├─bin

简述人脸特异性识别&amp;&amp;一个基于LBP和SVM的人脸识别小例子

原谅我用图片,MAC在Safari里给文章进行图文排版太麻烦啦~ 本文适合初入计算机视觉和模式识别方向的同学们观看~ 文章写得匆忙,加上博主所知甚少,有不妥和勘误请指出并多多包涵. 本文Demo的代码由HZK编写,特征点由月神和YK选择和训练. 转载请注明 copyleft by sciencefans, 2014 为了方便大家学习,附上高维LBP的核心代码 1 ################################################### 2 # 3 # 4 # NO

COM2 --- 小例子

在COM1 的小例子中,,我们大概知道什么是组件类 ,什么是接口了.这小节呢,我们来实现一下由一个组件类去实现两个接口的过程. 新建项目: 我们的 解决方案的 名字是 ComDemoCode ,项目名字是 MathToolKit  这表示 我们的 项目 自动 生成的 DLL  的名字就是 MathToolKit(数学工具包). 我们的继承关系 有必要 给大家 先 列出来,让大家 看看 在这里面,IPrimerMath接口 提供 + - * / % 五个基本运算方法,IAdvanceMath接口提

python try小例子

#!/usr/bin/python import telnetlib import socket try: tn=telnetlib.Telnet('10.67.21.29',60000) except socket.error, e: print e exit(1) tn.set_debuglevel(1) tn.write('quit'+'\n') print 'ok' socket.error为错误类型 e为对象 python try小例子,布布扣,bubuko.com