zoukankan      html  css  js  c++  java
  • 在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里面!
  • 相关阅读:
    一步一步写数据结构(线索二叉树)
    Android studio 下JNI编程实例并生成so库
    IOS和Android音频开发总结
    IDEA常用快捷键
    Spring事务简介
    IDEA新建Springboot项目
    140201126杨鹏飞作业六
    140201126杨鹏飞作业三
    140201126杨鹏飞作业七
    自我介绍
  • 原文地址:https://www.cnblogs.com/Siny0/p/11190062.html
Copyright © 2011-2022 走看看