您的位置:首页 > 博客中心 > 数据库 >

SqlCollections - T-SQL程序

时间:2022-03-14 01:27

  1 --==============================T-SQL程序===============================
  2 --GO
  3 --会将两个GO之间的语句传递给SQL Server编译并运行,含有多个GO的就会分多次传递语句
  4 --GO n 代表循环执行n次
  5 PRINT ‘aaa‘
  6 GO 10
  7 
  8 --类型转换
  9 --CAST:CAST(值 AS 类型)
 10 PRINT CAST(10 AS varchar(10)) + ‘元‘
 11 --CONVERT:CONVERT(类型,值)
 12 PRINT CONVERT(varchar(10),10) + ‘元‘
 13 
 14 --字符串常量
 15 --使用2个单引号来输出单引号
 16 PRINT ‘He said:‘‘Hello!‘‘‘
 17 
 18 --quotename函数
 19 --输出带左右符号的字符串,省去了自己拼凑的麻烦和不易读
 20 --默认符号是[]
 21 PRINT quotename(‘ID‘)    --输出:[ID]
 22 PRINT quotename(‘ID‘,‘‘‘‘)    --输出:‘ID‘
 23 
 24 --查询对象ID
 25 SELECT DB_ID(‘中文示例数据库‘)
 26 SELECT OBJECT_ID(N‘[dbo].[产品]‘)
 27 
 28 --常用的全局变量
 29 --@@ROWCOUNT 返回受上一语句影响的行数
 30 SELECT * FROM 订单
 31 PRINT ‘影响的记录条数:‘+CONVERT(varchar(100),@@ROWCOUNT)
 32 --@@IDENTITY 返回上次插入的标识值
 33 INSERT INTO tbl2(Name) VALUES(111)
 34 GO
 35 PRINT ‘上次插入的标识值为:‘+CONVERT(varchar(100),@@IDENTITY)
 36 --@@ERROR返回执行的上一个T-SQL语句的错误号
 37 INSERT INTO tbl2(Name) VALUES(111)
 38 GO
 39 PRINT ‘上次执行语句的错误号为:‘+CONVERT(varchar(100),@@ERROR)    --错误号0代表无错误
 40 INSERT INTO tbl2(Name) VALUES(‘a‘)
 41 GO
 42 PRINT ‘上次执行语句的错误号为:‘+CONVERT(varchar(100),@@ERROR)
 43 --根据错误号查询详细信息
 44 SELECT * FROM sys.sysmessages
 45 
 46 --CASE语句
 47 --格式1:CASE 字段1 WHEN 1 THEN 1 WHEN 2 THEN 2 ... ELSE 10 END
 48 DECLARE @i int
 49 SET @i = 1
 50 PRINT CASE @i 
 51     WHEN 1 THEN 111
 52     WHEN 2 THEN 222
 53     ELSE 333
 54     END    --END不能少!
 55 --格式2:CASE WHEN 表达式1 THEN 1 WHEN 表达式2 THEN 2 ... ELSE 10 END
 56 DECLARE @i int
 57 SET @i = 3
 58 PRINT CASE WHEN @i < 2 THEN ‘小于2‘
 59         WHEN @i > 2 AND @i < 5 THEN ‘小于5‘
 60         ELSE ‘大于5‘
 61         END
 62 
 63 --GOTO语句
 64 DECLARE @num int
 65 SET @num = 1
 66 IF(@num < 0)
 67 GOTO Result1
 68 ELSE
 69 GOTO Result2
 70 
 71 Result1:
 72     PRINT 111
 73 Result2:
 74     PRINT 222
 75 
 76 --TRY CATCH语句
 77 BEGIN TRY
 78     PRINT ‘输出:‘ + 1
 79 END TRY
 80 BEGIN CATCH
 81     PRINT ‘出错!错误号:‘ + CONVERT(nvarchar(10),ERROR_NUMBER()) + ‘ 错误信息为:‘ + ERROR_MESSAGE()
 82 END CATCH
 83 
 84 --拼凑SQL
 85 --例:将订单表中的1991年到1998年的订单数据分别存入“订单_年份”表中
 86 DECLARE @sql varchar(1000)
 87 DECLARE @year int
 88 SET @year = 1991
 89 WHILE @year <= 1998
 90 BEGIN
 91     SELECT @sql = ‘SELECT * FROM 订单 WHERE YEAR(订购日期) =‘ + CONVERT(varchar(4),@year)
 92     EXEC (@sql)    --此处的括号一定不能少!
 93     IF @@ROWCOUNT > 0    --如果有数据才存入
 94     BEGIN
 95         SELECT @sql = 
 96             ‘SELECT * INTO 订单_‘ + CONVERT(varchar(4),@year) + ‘ FROM 订单 WHERE YEAR(订购日期) =‘ + CONVERT(varchar(4),@year)    --注意加空格!
 97         PRINT @sql    --用以检验拼凑出的sql是否正确
 98         EXEC (@sql)
 99     END
100     SELECT @year += 1    --@year = @year + 1
101 END

 

热门排行

今日推荐

热门手游