经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库运维 » MS SQL Server » 查看文章
SQL Server -- 回忆笔记(五):T-SQL编程,系统变量,事务,游标,触发器
来源:cnblogs  作者:在代码的世界里游走  时间:2018/10/29 9:48:04  对本文有异议

SQL Server -- 回忆笔记(五):T-SQL编程,系统变量,事务,游标,触发器

1. T-SQL编程

  1)声明变量

  1.   declare @age int

  (2)为变量赋值

  1.   set @age=26

  (3)while循环

  1. declare @i int=1
  2. while @i<=100
  3. begin
  4. print @i
  5. @i=@i+1
  6. end

  (4)if  else

  1. if @i>10
  2. begin
  3. print '大于10'
  4. end
  5. else if @i>5
  6. begin
  7. print '大于5'
  8. end
  9. else
  10. begin
  11. print '小于等于5'
  12. end

  (5)系统变量

    @@version: 返回  SQL Server的当前安装的系统和生成信息。
    @@error: 上一条sql语句出错,会有错误号;上一条sql执行没出错,则为0。
    @@lanuage: 返回当前所用语言的名称。

    @@max_connections:  返回 SQL Server实例允许同时进行的最大用户连接数。(实际允许的用户连接数还依赖于所安装的  SQL Server的版本以及应用程序和硬件的限制)
    @@Rowcount: 上一条sql语句影响的行数。
    @@servername: 返回正在运行  SQL Server的本地服务器的名称。

    @@connections: 此函数返回  SQL Server自上次启动以来尝试的连接数,无论连接是成功还是失败。

  (6)事务

    一个事务中,不能一个sql语句执行成功,一个执行失败。只要有一个sql语句执行失败,就是失败。

    自动提高事务:当执行一条sql语句,数据库自动打开一个事务,执行成功->自动提交,执行失败->自动回滚。

    隐式事务:当执行一条sql语句,数据库自动打开一个事务,需要手动提交,手动回滚。(打开隐式事务:set implicit_Transactions ON)

    显式事务:需要手动打开事务,手动提交,手动回滚。

    打开一个事务:

  1. begin transaction
  2. declare @sum int=0
  3. update tableA set Name='大胡子' where id=2
  4. set @sum=@sum+@@error
  5. update tableB set Name='大胡子' where id=2
  6. set @sum=@sum+@@error
  7. if @sum<>0
  8. begin
  9. rollback --回滚,也可写rollback transaction
  10. end
  11. else
  12. begin
  13. commit --提交,也可写commit transaction
  14. end

 

2.  游标cursor (相当于C#中的For)

  定义游标:

  1. declare Mycursor cursor for
  2. select UserName,Age,Email from tbUsers

  使用游标:

  1. open Mycursor
  2. declare @uName varchar(50)
  3. declare @uAge int
  4. declare @uEmail varchar(50)
  5. fetch next from Mycursor into @uName,@uAge,@uEmail
  6. if (@@fetch_status=0)
  7. begin
  8. print @uName
  9. print @uAge
  10. print @uEmail
  11. end
  12. close Mycursor

 

3. 触发器 trigger

  触发器是数据库服务器中发生事件时自动执行的一种特殊存储过程。

  DML触发器:如果用户要通过数据操作语言 (DML) 事件编辑数据,则执行 DML 触发器。

        表或视图的 insert, delete, update语句(不支持select)。

  DDL触发器:DDL 触发器用于响应各种数据定义语言 (DDL) 事件。

        这些事件主要对应于  Transact-SQL Create、Alter 和 Drop 语句,以及执行类似 DDL 操作的某些系统存储过程。

  登录触发器: 登录触发器在遇到 Login 事件时触发,该事件是在建立用户会话时引发的。

  创建触发器:

  1. create trigger trg_In ON tbUsers
  2. after delete
  3. as
  4. begin
  5. insert into tbUsers_backup(Name,Age,Email) select Name,Age,Email from deleted
  6. end

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号