4.1 T-SQL 常量和变量
4.1.1 T-SQL 常量
1.数字常量
包裹证书常量、小数常量和浮点常量
( 补充: C# 中声明常量的关键字为 const 、java 中声明常量的关键字为 finally )
2.字符串常量
包括在单引号内,包含数字字符(a~ z、A ~ Z 和 0~9)以及特殊符号(!、@、#)
3.日期和时间常量
4.符号常量
4.1.2 T-SQL 标识符
命名规则:
1)常规标识符。以ASCII字母、Unicode字母、下划线( _ )、@或#开头,其后可跟一个或若干个ASCII字符、Unicode字符、下划线( _ )、美元符号($)、@或#,但不能全为下划线(_)、@或#。常规标识符不能是T-SQL保留字,如select、 update 等。常规标识符中不允许嵌入空格或其他特殊字符。
2)分隔标识符。包括在双引号(“”)或方括号([])内的常规标识符,或不符合常规标识符规则的标识符。如"select” “emp salary" 等。
4.1.3 T-SQL 局部变量定义
局部变量的作用域局限在一定范围内的T-SQL 对象。
局部变量是用户自定义的变量,必须以@开始,用于保存单个数据值。局部变量使用 declare 语句声明,初始化为 null 。
在一条 declare 语句中,可以声明多个局部变量,使用逗号分隔。
当声明局部变量后,可用 set 或 select 赋值。
4.1.4 使用 set 语句为局部变量赋值
一个 set 语句仅能为一个变量赋值
语法: set @varaible_name=exspression
go 语句的作用:
1). 等待 go 语句的代码执行完毕,再执行 go 之后的语句。
2). 清除之前的局部变量
4.1.5 使用 select 语句为局部变量赋值
语法: select @varaible_name=exspression
4.1.6 T-SQL 全局变量
通常讲全局变量的值赋给局部变脸,以便保存和处理。
@@ERROR 返回上一条 Transcat-SQL 语句所返回的错误号
@@IDENTITY 返回最后插入的标志值
@@MAX_CONNECTIONS 返回SQL sever 实例所允许同时连接的最大用户数
@@ROWCOUNT 返回上一条语句所影响的行数
@@TRANCOUNT 返回当前连接的活动事务数
eg:
4.2 流程控制语句
T-SQL 的流程控制关键字包括 : begin ... end 、if ... else 、while 、case 等。
4.2.1 begin ... end 语句
至少包含一条SQL语句,否则将出错,类似于 c# 或 java 语言的大括号 { } ,其主要用于 if ...else 语句、while 循环和 case 语句的执行体。
4.2.2 if ... else 条件判断语句
语法:
if logical_exspression
exspression1
[ else
exspression2]
[ ] 代表可选项
4.2.3 while 循环语句
语法:
while logical_exspression
begin
exspression
[break]
[continue]
end
注: begin 跳出当前循环,continue 跳出本次循环
4.2.4 case 选择语句
case input_exspression
when when_exspression then result_exspression
[...n]
[else else_result_exspression]
end
eg:
4.3 系统存储过程和无参存储过程
4.3.1 系统存储过程
所有系统存储过程均以 “ sp_ ” 开始,系统存储过程均存放于系统数据库 master 中。
使用“ execute | exec 存储过程名 ” 命令执行存储过程。
4.3.2 存储过程特点
优点:
1).加快系统运行速度
2). 封装复杂操作
3). 实现模块化程序设计和代码重用
4). 增强安全性
5). 减少网络流量
4.3.3 用户自定义存储过程
语法:
create proc[edure] proc_name
[{@parameter_name data_type}={默认值}] [output],...,n
as
procedure_body
注:参数默认为 input 类型,即输入类型;参数之后的“ output ” 表明该参数为输出类型、
4.4 有参存储过程
4.4.1 带输入参数存储过程
参数定义为:“ 参数名 数据类型 ”
SQL Sever 存储过程中的参数输入类型和输出类型,参数类型默认为输入类型。
4.4.2 带输出参数存储过程
输出参数必须在创建存储过程时,使用 output 关键字进行声明。