存储过程中 游标(CURSOR)的简单使用及其他

来源:互联网 发布:便携式数据采集器 编辑:程序博客网 时间:2024/04/29 14:59
(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字符一律需要两个字节存储每一字符。
原创粉丝点击