SQL Server 学习系列之五

   SQL Server 学习系列之五

     

     SQL Server 学习系列之一(薪酬方案+基础)

 

     SQL Server 学习系列之二(日期格式问题)

 

     SQL Server 学习系列之三(SQL 关键字)

 

     SQL Server 学习系列之四(存储引擎笔记)

      很多初学者会为日期格式的输出很困惑,如何得到想要的时间格式呢?convert()函数变换无穷,给我们带来困惑,用convert(char(10),getdate(),@int)函数的类型值输出格式由参数@int控制,可以编写一个存储过程,不用记忆,方便查询,关键代码如下:

 1 -- =============================================
 2 -- Author:        zhangbc    
 3 -- Create date: 2013-10-19
 4 -- Description:    检测convert(char(10),getdate(),1)函数的类型值输出格式
 5 -- =============================================
 6 ALTER PROCEDURE [dbo].[Getconvert] 
 7     (
 8         @startFlg INT,
 9         @endFlg INT,
10         @condiition CHAR(1000)='1=1'
11     )
12 AS
13 BEGIN
14     -- SET NOCOUNT ON added to prevent extra result sets from
15     -- interfering with SELECT statements.
16     SET NOCOUNT ON;
17     IF(@startFlg>@endFlg)
18      BEGIN
19          SELECT '开始数字大于结束数字,顺序不对,请更正!' as ErrorMessage
20      END    
21     ELSE
22     BEGIN
23     CREATE TABLE #t
24     ( flg INT,
25       date NVARCHAR(100),
26       txt TEXT DEFAULT NULL
27     )
28     DECLARE 
29         @date NVARCHAR(100),
30         @cn NVARCHAR(4000)='无效类型值有:',
31         @ErrorMessage NVARCHAR(100),
32         @sql CHAR(1000)
33     WHILE (@startFlg<=@endFlg)
34      BEGIN
35          --捕获异常状态
36        BEGIN TRY
37          SET @date=convert(char(20),getdate(),@startFlg)
38          INSERT INTO #t VALUES (@startFlg ,@date,NULL)
39        END TRY
40        BEGIN CATCH
41          SET @ErrorMessage=ERROR_MESSAGE()
42          SET @cn=@cn+' '+replace(CAST(@startFlg AS NVARCHAR(4000)),'','')
43        END CATCH;
44        set @startFlg=@startFlg+1
45      END   
46     INSERT INTO #t VALUES (@endFlg+1,@ErrorMessage,cast(@cn AS TEXT))
47     --SELECT @cn,@ErrorMessage
48     SET @sql='SELECT * FROM #t where '+@condiition
49     EXEC(@sql)
50     DROP TABLE #t                
51    END
View Code

     测试一:

exec [Getconvert] 1000,100
View Code

     截图如下:

      测试二:

exec [Getconvert] 10,20
View Code

      截图如下:

       一看便知,解释都是多余的,有心人可以学习一下SQL中捕捉异常的方法,try……catch……语句在SQL使用真心不多见,但对规避程序风险好处还是大大的,本文就是一个很好的体现;另外,convert()函数功能还是很强大的,值得深入学习。此篇文章也是对SQL Server 学习系列之二做了一下拓展,祝有心人好运!

原文地址:https://www.cnblogs.com/zhangbc/p/3439659.html