存储过程好比C#方法

1.事物写在过程里面,直接调用存储过程

1.1没有参数的过程

/*transaction事物,procedure存储过程*/
create proc CopyTable_1_10000
as
begin tran--开始事物
declare @tran_error int;--声明参数
set @tran_error=0;--给参数赋值
declare @i int,@y int;
set @i=10000;set @y=1;
/*新表不存在时,将数据复制到新表
select * into table_3 from(select*from table_1)as a
*/
while @y<@i --循环
begin
/*新表存在,将数据复制*/
insert into table_3(materialName,Mtype) select materialName,Mtype from table_1
set @y=@y+1;--循环条件
set @tran_error=@tran_error+@@ERROR;--事物用于记录错误的系统参数
end
/*判断事物执行是否出错*/
if(@tran_error>0)--@tran_error大于1代表出错,事物回滚
begin
rollback tran;
print '事物回滚'
end
else
begin
commit tran
print '提交事物'
end
--调用存储过程
exec CopyTable_1_10000

1.2带传参的过程

--PROC带参数
create proc showDescription
@Mtype int--需要传递的参数
as
begin
select * into #table_3 from
(select table_1.materialName,table_2.MtypeDescription from table_1 left join table_2
on table_1.Mtype=table_2.id
where table_1.Mtype=@Mtype)as c
select * from #table_3
end
--调用,传递@Mtype参数
exec showDescription @Mtype=2
--删除
drop proc showDescription

  1.3带输出参数

if exists (select * from sys.procedures where name ='proc_getCourseInfo')
drop proc proc_getCourseInfo
go
create proc proc_getCourseInfo
@gradeid int,
@outparameter int output--输出参数
as
begin
select g.g_banji,c.c_CourseName,c.c_teacher,c.c_date,c.c_time from Course c left join grade g on c.c_gradeid=g.g_id where g.g_id=@gradeid;
select @outparameter=COUNT(*) from Course;
end declare @p int
exec proc_getCourseInfo @gradeid=2,@outparameter=@p output
select @p

  

SQL Proc(存储过程)/tran(事物)的更多相关文章

  1. SQL Server 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过

    存储过程 创建存储过程 use pubs --pubs为数据库 go create procedure MyPRO --procedure为创建存储过程关键字,也可以简写proc,MyPRO为存储过程 ...

  2. sql 在存储过程中使用事务(转)

    本来想自己写一下,后来发现这个写的比我理解的要好,所以直接拽过来了,链接地址:https://www.cnblogs.com/RascallySnake/archive/2010/05/17/1737 ...

  3. Sql Service存储过程分页

    一起是用oracle数据库..感觉oracle数据库强大.查询速度是杠杠的.换了家公司用的是SQL SERVICE.以前用了1年现在捡回以前的记忆.动手写了动态SQL过存储过程分页.感觉和oracle ...

  4. sql proc触发异常处理回滚

    sql proc触发异常处理回滚 针对proc嵌套proc很有用 begin begin try begin tran --判断错误 BEGIN --ROLLBACK TRAN SET @vcResu ...

  5. C# 调用存储过程 Sql Server存储过程 存储过程报错,程序中的try

    C#程序调用Sql Server存储过程,存储过程中报错情况,返回值... 0.SQL存储过程 USE [Opos] GO /****** Object: StoredProcedure [dbo]. ...

  6. sql server 存储过程使用游标记录

    sql server 存储过程使用游标记录--方便下次参考使用 游标的组成: 声明游标 打卡游标 从一个游标中查找信息 关闭游标 释放游标 游标类型: 静态游标 动态游标 只进游标 键集驱动游标 静态 ...

  7. SQL Server存储过程Return、output参数及使用技巧

    SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...

  8. SQL Server 存储过程(转载)

    SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这 ...

  9. 14、SQL Server 存储过程

    SQL Server 存储过程 存储过程类似函数,可以重复使用.相对于函数,存储过程拥有更强大的功能和更高的灵活性. 存储过程中可以包含逻辑控制语句和数据操作语句,可以接受参数,输出参数,返回单个值或 ...

随机推荐

  1. hdoj 1898 Sempr == The Best Problem Solver?

    Sempr == The Best Problem Solver? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/3276 ...

  2. 使用Camstudio和KeyCastOW来录屏制作软件Demo视频

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:使用Camstudio和KeyCastOW来录屏制作软件Demo视频.

  3. C#基础知识学习手记1

    这篇随笔主要用来记录我在C#学习过程做的笔记,算作是一门课程中的小知识点吧. 1. 变量和表达式                         1.1 如何在输出带有引号(英文双引号.英文单引号)以 ...

  4. 让ie9之前的版本支持canvas

    原来google的研发人员早就帮我们解决了这问题. 在这里我们得首先感谢google 在这链接http://excanvas.sourceforge.net/ 下载下来后 吧excanvas.js引入 ...

  5. 【转】coco2d-x 纹理研究

    1.通常情况下用PVR格式的文件来进行图片显示的时候,在运行速度和内存消耗方面都要比PNG格式要快和小.一般情况下PVR消耗的内存比PNG消耗的内存小25%左右.PVR格式可以用ZWoptex导出.P ...

  6. 在windows C++中编译并使用Lua脚本

    早前就用过LUA ,只是局部的小项目使用,突然兴起想要写一些关于LUA 的  文章,记录曾经学习过的点点滴滴. 这里我使用的是LUA5.2作为 案例 lua做为轻量级脚本语言已经被广泛应用到应用软件以 ...

  7. Windows下安装破解JIRA6.3.6

    相关工具下载地址:http://pan.baidu.com/s/1kT9xZEJ 安装环境: WindowsXP MySQL-5.5.28 JDK1.6.0_21 JIRA功能全面,界面友好,安装简单 ...

  8. Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面

    现在开发中的功能需要直接跳转到拨号.联系人.短信界面等等,查找了很多资料,自己整理了一下. 1.跳转到拨号界面,代码如下: 1)直接拨打 Intent intentPhone = new Intent ...

  9. Canvas 笔记(持续更新中)

    1.从线条开始 HTML <canvas id="canvas"></canvas> Javascript var canvas=document.getE ...

  10. web相关

    1. html 和 htm 的区别 如果一个网站有index.html和index.htm 默认情况下优先访问.html htm是为了兼容之前dos系统的命名规范. 2. http1.0短连接 htt ...