zoukankan      html  css  js  c++  java
  • 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 学习系列之二做了一下拓展,祝有心人好运!

  • 相关阅读:
    wenbao与分治
    wenbao与贪心
    wenbao与高精度
    wenbao与FFT
    wenbao与卡特兰数
    wenbao与类
    wenbao与取整函数
    wenbao与字符串转化
    wenbao与scanf
    wenbao与数字与字符串
  • 原文地址:https://www.cnblogs.com/zhangbc/p/3439659.html
Copyright © 2011-2022 走看看