首页 > 代码库 > SqlCollections - T-SQL程序

SqlCollections - T-SQL程序

  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     END100     SELECT @year += 1    --@year = @year + 1101 END

 

SqlCollections - T-SQL程序