SQL Proc(存储过程)/tran(事物)
存储过程好比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(事物)的更多相关文章
- SQL Server 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过
存储过程 创建存储过程 use pubs --pubs为数据库 go create procedure MyPRO --procedure为创建存储过程关键字,也可以简写proc,MyPRO为存储过程 ...
- sql 在存储过程中使用事务(转)
本来想自己写一下,后来发现这个写的比我理解的要好,所以直接拽过来了,链接地址:https://www.cnblogs.com/RascallySnake/archive/2010/05/17/1737 ...
- Sql Service存储过程分页
一起是用oracle数据库..感觉oracle数据库强大.查询速度是杠杠的.换了家公司用的是SQL SERVICE.以前用了1年现在捡回以前的记忆.动手写了动态SQL过存储过程分页.感觉和oracle ...
- sql proc触发异常处理回滚
sql proc触发异常处理回滚 针对proc嵌套proc很有用 begin begin try begin tran --判断错误 BEGIN --ROLLBACK TRAN SET @vcResu ...
- C# 调用存储过程 Sql Server存储过程 存储过程报错,程序中的try
C#程序调用Sql Server存储过程,存储过程中报错情况,返回值... 0.SQL存储过程 USE [Opos] GO /****** Object: StoredProcedure [dbo]. ...
- sql server 存储过程使用游标记录
sql server 存储过程使用游标记录--方便下次参考使用 游标的组成: 声明游标 打卡游标 从一个游标中查找信息 关闭游标 释放游标 游标类型: 静态游标 动态游标 只进游标 键集驱动游标 静态 ...
- SQL Server存储过程Return、output参数及使用技巧
SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...
- SQL Server 存储过程(转载)
SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这 ...
- 14、SQL Server 存储过程
SQL Server 存储过程 存储过程类似函数,可以重复使用.相对于函数,存储过程拥有更强大的功能和更高的灵活性. 存储过程中可以包含逻辑控制语句和数据操作语句,可以接受参数,输出参数,返回单个值或 ...
随机推荐
- ios真机调试详细步骤
•真机调试的主要步骤 1.登录开发者主页 2.生成cer证书:cer是一个跟电脑相关联的证书文件,让电脑具备真机调试的功能 3.添加App ID:调试哪些app? 4.注册真机设备:哪台设备需要做真机 ...
- VC++ 统计文件夹下面的当日和本月生成的图片
void GetCapNum(int * todayNum, int * mouthNum) { string path = ".\\res";//路径位于程序运行目录下的r ...
- 淘宝HSF服务的原理以及简单的实现
淘宝HSF服务具体来说分三个应用:api接口,service服务,本地应用. 最基本的Api服务应该是十分干净的,不含方法,只有接口.它是要被打包(jar包的形式)到中央仓库去的. service服务 ...
- 【28】避免返回handles指向对象内部成分
1.为什么? 很简单,你指向箱子里面的一个物品,使用这个物品.但是箱子不受你控制,箱子销毁了,里面的物品也会随之销毁.那么这种情况下,你指向的就是一堆垃圾,你还在使用这个物品,导致未定义的行为.
- WordPress公布新文章Email通知注冊用户
非常多WordPress博客都开放了用户注冊的功能,用户能够參与到博客的内容建设其中来.也就是一个博客由多个用户来写.如今有这种需求,怎样实如今某一个用户发表文章后.其它用户都能收到Email通知?以 ...
- UVA Knight Moves
题目例如以下: Knight Moves A friend of you is doing research on the Traveling Knight Problem (TKP) where ...
- MAC OS X 终端命令入门 (简单常用整理)
在这里记下..防止丢失 pwd 当前工作目录 cd(不加参数) 进root cd(folder) 进入文件夹 cd .. 上级目录 cd ~ 返回root cd - 返回上一个访问的目录 rm 文件名 ...
- warning(包括PHP中的notice)必须改吗?
作者:马 岩(Furzoom) (http://www.cnblogs.com/furzoom/)版权声明:本文的版权归作者与博客园共同所有.转载时请在明显地方注明本文的详细链接,未经作者同意请不要删 ...
- modelsim将波形文件保存下来却不打开图形界面
vsim -c -do sim.tcl -l sim.log 波形怎么保存啊,我想把波形保存下来,但不显示,想看那个信号时在加上,不然信号全部出来了太乱了 在do文件里写add wave -r *ru ...
- 实现方法 C# button快捷键
本文讲解了三种方法实现C# button快捷键,如Alt + *(按钮快捷键),Ctrl+*及其他组合键等. C# button快捷键之第一种:Alt + *(按钮快捷键) 在大家给button.la ...