在Sql中使用Try Catch

原文:在Sql中使用Try Catch

今天在写sql中出现了!我想在sql使用trycatch吧! 哎..但是语法又记不住了! 那就清楚我们的google大师吧! 嘿,网上关于在sql中使用Try Catch的还有真不少的文章! 闲话就少了! 今天记录下来以便下次使时查阅!

创建错误日志表:

CREATE TABLE ErrorLog(errNum INT,ErrSev NVARCHAR(1000),ErrState INT,ErrProc NVARCHAR(1000),ErrLine INT, ErrMsg NVARCHAR(2000))
创建错误日志记录存储过程:
CREATE PROCEDURE ErrorLog
AS
     SELECT ERROR_NUMBER() AS ErrNum,ERROR_SEVERITY()AS ErrSev,ERROR_STATE() AS ErrState,ERROR_PROCEDURE() AS ErrProc,ERROR_LINE()AS ErrLine,ERROR_MESSAGE()AS ErrMsg
     INSERT
     INTO ErrorLog
     VALUES(ERROR_NUMBER(),ERROR_SEVERITY(),ERROR_STATE(),ERROR_PROCEDURE(),ERROR_LINE(),ERROR_MESSAGE())
GO

写一个存储过程吧!里面使用一下Try Catch:

USE [Your_Test]
GO
/****** Object:  StoredProcedure [dbo].[getTodayBirthday]
        Script Date: 05/17/2010 15:38:46
        Author:jinho
        Desc:获?取?当?天?生?日?的?所?有?人?
        ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[getTodayBirthday]
AS
BEGIN TRY
 declare @today datetime;
 SET @today = GETDATE();--获?取?今?天?的?日?期?
 DECLARE @day VARCHAR(2);
 SET @day =REPLACE(DAY(@today),0,‘‘);
 DECLARE @month VARCHAR(2) ;
 SET @month = REPLACE(month(@today),0,‘‘);
 DECLARE @year VARCHAR(4);
 SET @year = YEAR(@today);
 SELECT * FROM dbo.UserInfo  WHERE REPLACE(DAY(CONVERT(DATETIME,Birthday )),0,’’) =@day AND REPLACE(MONTH(CONVERT(DATETIME,Brithday)),0,’’)=@month AND Birthday IS NOT NULL 
 END TRY
 BEGIN CATCH
 ErrorLog --调用上面的存储过程,保存错误日志
 END CATCH 

 说明:ERROR_NUMBER(),ERROR_SEVERITY(),ERROR_STATE(),ERROR_PROCEDURE(),ERROR_LINE(),ERROR_MESSAGE() 这几个函数只能用在Catch里面!
 

// ‘;
document.write(str);
document.write("");
}
// ]]>

Technorati 标签: sqlserver,sql,Try catch

时间: 2024-08-24 15:40:39

在Sql中使用Try Catch的相关文章

sql中的begin catch 。。。end catch 的用法

begin catch ...end  catch 是用来处理异常的 begintry--SQLendtry begincatch--sql (处理出错动作)endcatch 我们将可能会出错的sql 写在begin try...endtry 之间,若出错,刚程序就跳到紧接着的begin try...endtry 的beign catch...endcatch 中,执行beign catch...endcatch错误处理SQL.try..catch 是可以嵌套的. 在begin catch ..

在SqlServer中使用Try Catch(转)

今天在写sql中出现了!我想在sql使用trycatch吧! 哎..但是语法又记不住了! 那就清楚我们的google大师吧! 嘿,网上关于在sql中使用Try Catch的还有真不少的文章! 闲话就少了! 今天记录下来以便下次使时查阅! 创建错误日志表: CREATE TABLE ErrorLog(errNum INT,ErrSev NVARCHAR(1000),ErrState INT,ErrProc NVARCHAR(1000),ErrLine INT, ErrMsg NVARCHAR(20

SQL中删除某数据库所有trigger及sp

SQL中删除某数据库所有trigger及sp   编写人:CC阿爸 2014-6-14 在日常SQL数据库的操作中,如何快速的删除所有trigger及sp呢 以下有三种方式可快速处理. --第一种 --事务的处理方法 Begin Transaction Begin try declare @SQL varchar(max) set @SQL='' select @SQL=@SQL+name+',' from sysobjects where xtype='TR' and name<>'Drop

sql中的Tran和C#中的TransactionScope介绍

sql 中的Tran 俩种写法 第一种写法 try catch: Begin TRY Begin Tran transaction DECLARE @ServiceOrderId INT SET @ServiceOrderId=73342 DECLARE @ErrorCount INT SET @ErrorCount = 0 --调整积分通订单状态 支付完成 UPDATE dbo.ServiceOrderNew SET OrderStatus = 2,UpdateDate = GETDATE()

webMethods-Developer/Designer中try-catch与SQL中事务的实现

TryCatch的结构为三个Sequence: -Main(exit on:Success) +try(exit on:Failure) +catch (exit on:Done) *以上做法是以前webMethods对于数据库操作的实现,现在有了JDBC Adapter之后,数据库操作变得简单灵活,因而取代了这种做法.如果是有其他特殊目的的这种方法依然适用. 在JDBC Adapter建立的过程中会提供三种Transaction的选择: NO_TRANSACTION:没有使用事务 LOCAL_

SQL中varchar和nvarchar有什么区别?

varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节的实际长度,而不是 n 个字节. nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍. 两字段分别有字段值:我和coffee那么varchar字段占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间.

SQL中使用WITH AS提高性能,使用公用表表达式(CTE)简化嵌套SQL

一.WITH AS的含义     WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到.有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数据的部分. 特别对于UNION ALL比较有用.因为UNION ALL的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本太高,所以可以使用WITH AS短语,则只要执行一遍即可.如果WITH AS短语所定

SQL中的5种聚集函数

原文:SQL中的5种聚集函数 作为一个刚毕业进入这行的菜鸟,婶婶的觉的那种大神.大牛到底是怎样炼成的啊,我这小菜鸟感觉这TMD要学的东西这多啊,然后就给自己定了许多许多要学习的东西,可是有人又不停地给你灌输:东西不在多而要精通!我也觉得很有道理,可是怎样才能精通呢?封神之路,在哪里啊 !!! 这一天没有一个安静的心,基本是学不进去了,发现自己还是太功利了,急功近利!也许你只要学就行,管他是否能够立即让人见识到你的厉害,技术和知识这种东西也许还是要强调一个 底蕴的.既然自己最烦那种看了两篇文章就给

SQL中的等号、IN、LIKE三者的比较

SQL中的等号.IN.LIKE三者的比较SQL 中等号.IN.LIKE 三者都可以用来进行数据匹配 .但三者并不相同. 等号是用来查找与单个值匹配的所有数据: IN 是 用来查找 与多个值匹配的所有数据: 而 LIKE用来查找与一个模式匹配的所有数据. 1.等号   确切知道所要查 确切知道所要查找的内容,且为单一值时,可以使用等号运算符来进行数据比较.等号运算符中可以使用字符串.日期或数字.例如,查找名为“王静”的工作人员,可以使用等号进行匹配: SELECT name, sex, id, s