无题
无题
智汇君数据库系统-变量|注释|批处理|流程控制|存储过程函数|游标|事务|锁
发表于 2020-05-19 | 分类于 数据库系统 | 浏览 次
字数统计: 1.1k | 阅读时长 ≈ 4
变量|注释|批处理|流程控制|存储过程函数|游标|事务|锁
SQL Server编程结构
变量
声明局部变量
1 | DECLARE @局部变量名 数据类型 |
可以同时定义多个变量,中间用逗号隔开
赋值局部变量
为局部变量赋值可以用SET或SELECT语句
1 | SET @变量名=表达式 |
注: 如果SELECT语句返回多个值,则局部变量取最后一个返回值。例:
1 | SELECT @Sname = Sname |
显示信息
Print语句
print语句只能显示字符数据类型
注释
1 | /*注释文本*/ |
批处理
批处理是成组执行的一条或多条T-SQL指令
GO语句用于指定批处理语句的结束处,单独使用一行。本身不是T-SQL的部分
注意:
不能在同一个批处理处,先删除,后使用
不在在同一个批处理处,先修改,后使用
流程控制语句
BEGIN…END
1 | BEGIN |
IF语句
IF-THEN语句
1 | IF condition THEN |
IF-THEN-ELSE语句
1 | IF condition THEN |
嵌套的IF语句
在THEN和ELSE子句中还可以包含IF语句
例题
WHILE
GOTO
WAITFOR
RETURN
CASE
存储过程(重点)
过程化 SQL块主要有两种类型,即命名块和匿名块
匿名块每次执行时都要进行编译,它不能被存储到数据库中,也不能在其他过程化SQ L块中调用
过程和函数是命名块,它们被编译后保存在数据库中,称 为持久性存储模块) ,可以被反复调用,运行速度较快
存储过程类型
用户自定义的存储过程
Transact-SQL
CLR
系统存储过程
设计存储过程
存储过程的设计规则
限定存储过程内的名称
对过程定义进行模糊处理
SET语句选项
存储过程的基本概念
存储过程是由过程化SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,因此称它为存储过程,使用时只要调用即可
优点
存储过程降低了客户机和服务器之间的通信量
运行效率高
方便实施企业规则
创建存储过程
带参数存储过程实例
带输出参数实例
带返回状态值实例
1 | CREATE PROCEDURE 过程名([@参数1 类型,.., @参数n 类型) |
1 | --参数不带括号也可以 |
可简写成PROC
无参数
1 | CREATE PROCEDURE aa |
实例

默认参数
1 | EXECUTE exp4 |
执行存储过程
可简写成EXEC
修改存储过程
重命名
1 | ALTER PROCEDURE 过程名1 RENAME TO 过程名2; |
重编译
1 | ALTER PROCEDURE 过程名(参数) |
删除存储过程
1 | DROP PROCEDURE 过程名; |
函数
和存储过程一样都是持久性存储模块;不同的是函数要指定返回类型
自定义函数
标量值函数
内联表值函数
多语句表值函数
定义
1 | CREATE FUNCTION 函数名([参数1, ..., 参数n]) RETURNS<类型> |
执行
1 | CALL/SELECT 函数名([参数1, ..., 参数n]) |
修改
1 | ALTER FUNCTION 过程名 1 RENAME TO 过程名 2; --重命名 |
1 | ALTER FUNCTION 函数名 COMPILE; --重新编译一个函数 |
内置函数
聚集函数
字符串函数
日期函数
数学函数
数据类型转换函数
系统函数
游标
使用游标的步骤
声明游标
INSENSITIVE
SCROLL
游标类型
SELECT_STATEMENT
READ_ONLY
UPDATE
打开游标
读取数据
关闭游标
释放游标
游标运用
使用游标逐行读取
返回指定行记录
使用游标修改数据
使用游标删除数据
使用ORDER关键字改变游标中行的顺序
事务
原子性
一致性
隔离性
持久性
控制事务流程
显示事务
启动事务
事务名称
事务变量名称
WITH MARK
提交事务
回滚事务
自动提交事务
隐式事务
数据锁定
丢失更新
脏读
不可重复读
数据锁分类
共享锁
更新锁
排它锁
意向锁
锁的粒度与时间
自定义锁
使用注意事项
你未必万丈光芒,但始终温暖有光。















































































































