zoukankan      html  css  js  c++  java
  • 触发器基础

    T-SQL 游标CURSOR的使用及其他

     (1) T-SQL 游标CURSOR的使用

    使用起来很简单,先定义,然后赋个值,打开,通过While Loop 一个一个读下去,最后关闭,释放内存。基本套路如下:

    DECLARE MyCursor cursor /* 声明游标,默认为单纯向前的游标。如果想要前后跳来跳去的,写成Scroll Cursor即可 */
    FOR
    SELECT Column1, Column2 FROM 某某表
    Where 某某条件


    OPEN MyCursor /* 打开游标 */

    FETCH NEXT from MyCursor Into @A, @B /* 读取第1行数据*/


    WHILE @@FETCH_STATUS = 0 /* 用WHILE循环控制游标 */


    BEGIN /*BEGIN-END 块*/


    //在这里,用@A,@B做点事,或者改一改值什么的.
    FETCH NEXT from MyCursor Into @A, @B /* 抓下一行 */

    END


    CLOSE MyCursor /* 关闭游标 */

    DEALLOCATE MyCursor /* 删除游标,释放内存 */

    (2) 临时表和表变量
    临时表就是临时生成一个表放在Tempdb中,有两种.本地临时表,名字第一个字是"#",全局临时表"##".
    本地临时表只是给当前连接使用,全局的谁都可以用.除了名字有点怪异外,使用起来临时表同普通表没有任何区别.
    用完后,不要忘记Drop掉
    表变量放在内存中,体积小效率高,尽量使用.用Declare创建.
    declare @user table(id int,lastname varchar(50),age int)

    (3) 系统变量
    @@Rowcount : 变了多少行
    @@error : 错误信息

    (4) Case 语句,返回是一个值
    有两种:
    CASE 某某表达式 When 某值1 Then 某值10
    When 某值2 Then 某值20
    ELSE 某值00
    END

    就是比较某某表达式等于某值1,2时,返回某值10,20等等. ELSE是兜底的.

    CASE WHEN 某布尔表达式 THEN 某值10
    When 某布尔表达式2 THEN 某值20
    ELSE 某值00
    END
    就是布尔表达式是真,返回后面的某值10,20,都是假,返回ELSE后面的值. CASE后面要跟END表示结束

    (5) Transaction
    BEGIN TRANSACTTION /*开始一个Transaction*/

    IF @@ERROR <> 0
    ROLLBACK TRANSACTION /*如果出错,就Rollback*/
    ELSE
    --Commit the transaction
    COMMIT TRANSACTION /*一切正常就COMMIT*/

    Transaction可以简写为Trans, 在上面三句Transaction后面都可以加个名字,常量或变量.如
    BEGIN TRANSACTTION 某某交易名.
    有一个变量叫@TransCount是用在嵌套交易中,算算目前到了第几层的.

    (6) Create Trigger格式如下
    Create Trigger 某某名字
    ON 某某表
    FOR | AFTER | INSTEAD OF 某某事件
    As
    做某某触发后该干的事

    某某事件包括: Insert,Delete, Update


    (7) Create View 格式
    Create View 视图的名字 (变量1, 变量2 ...)
    As
    Select 语句

    那个括号里的变量1,2 可以省略.

    (8)Data Type 数据类型
    BINARY   每个字符占一个字节 任何类型的数据都可存储在这种类型的字段中。
    BIT 1 个字节 Yes 和 No ,以及只包含这两个数值之一的字段。
    TINYINT 1 个字节 介于 0 到 255 之间的整型数。
    MONEY 8 个字节 符号整数。
    DATETIME 8 个字节 介于 100 到 9999 年的日期或时间数值。
    UNIQUEIDENTIFIER 128 个位 用于远程过程调用的唯一识别数字。
    REAL 4 个字节 单精度浮点数。
    FLOAT 8 个字节 双精度浮点数。
    SMALLINT 2 个字节 短整型数。
    INTEGER 4 个字节 长整型数。
    DECIMAL 17 个字节 精确的数字数据类型。。
    TEXT 每一字符两字节 从零到最大 2,14 千兆字节。
    IMAGE 视实际需要而定 从零到最大 2,14 千兆字节。用于 OLE 对象。
    CHARACTER 每一字符两字节(参见注意) 长度从 0 到 255 个字符。

    定义成TEXT也称作(MEMO)或CHAR(也称作有具体长度的 TEXT(n))的字段中的字符被储存在 Unicode 表示格式。Unicode字符一律需要两个字节存储每一字符。

  • 相关阅读:
    排序算法
    chrome
    2017年末思考
    phpstorm修改创建文件时的默认注释
    男人
    Easyui-Tree和Combotree使用注意事项-sunziren
    Easyui-Treegrid使用注意事项-sunziren
    在生产环境中碰见的JSP木马-sunziren
    JS实现粒子拖拽吸附特效-sunziren
    双向链表的简单Java实现-sunziren
  • 原文地址:https://www.cnblogs.com/sherry/p/1318009.html
Copyright © 2011-2022 走看看