SQL Server T-SQL编程(二)
令执行后的状态值。
使用全局变量时应该注意以下几点:
①全局变量不是由用户的程序定义的,它们是在服务器级定义的。
②用户只能使用预先定义的全局变量。
③引用全局变量时,必须以标记符“@@”开头。
④局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。
select @@ERROR 返回最后执行的 Transact-SQL 语句的错误代码(integer) (0,表示
没错误;1,表示有错误)
select APP_NAME ( ) as w --当前会话的应用程序
select @@IDENTITY --返回最后插入的标识值
select USER_NAME() --返回用户数据库用户名
SELECT @@CONNECTIONS --返回自上次SQL启动以来连接或试图连接的次数。
SELECT GETDATE() --当前时间
SELECT @@CPU_BUSY/100 --返回自上次启动SQL 以来 CPU 的工作时间,单位为毫
秒
USE tempdb SELECT @@DBTS as w --为当前数据库返回当前 timestamp 数据类型
的值。这一 timestamp 值保证在数据库中是唯一的。
select @@IDENTITY as w --返回最后插入的标识值
SELECT @@IDLE as w --返回SQL自上次启动后闲置的时间,单位为毫秒
SELECT @@IO_BUSY AS w --返回SQL自上次启动后用于执行输入和输出操作的时间,
单位为毫秒
SELECT @@LANGID AS w --返回当前所使用语言的本地语言标识符(ID)。
SELECT @@LANGUAGE AS w --返回当前使用的语言名
SELECT @@LOCK_TIMEOUT as w --当前会话的当前锁超时设置,单位为毫秒。
SELECT @@MAX_CONNECTIONS as w --返回SQL上允许的同时用户连接的最大数。
返回的数不必为当前配置的数值
EXEC sp_configure --显示当前服务器的全局配置设置
SELECT @@MAX_PRECISION as w --返回 decimal 和 numeric 数据类型所用的精度
级别,即该服务器中当前设置的精度。默认最大精度38。
select @@OPTIONS as w --返回当前 SET 选项的信息。
SELECT @@PACK_RECEIVED as w --返回SQL自启动后从网络上读取的输入数据包数
目。
SELECT @@PACK_SENT as w --返回SQ自上次启动后写到网络上的输出数据包数目。
SELECT @@PACKET_ERRORS as w --返回自SQL启动后,在SQL连接上发生的网络数
据包错误数。
SELECT @@SERVERNAME as w --返回运行SQL服务器名称。
SELECT @@SERVICENAME as w --返回SQL正在其下运行的注册表键名
SELECT @@TIMETICKS as w --返回SQL服务器一刻度的微秒数
SELECT @@TOTAL_ERRORS AS w --返回 SQL服务器自启动后,所遇到的磁盘读/写错
误数。
SELECT @@TOTAL_READ as w --返回 SQL服务器自启动后读取磁盘的次数。
SELECT @@TOTAL_WRITE as w --返回SQL服务器自启动后写入磁盘的次数。
SELECT @@TRANCOUNT as w --返回当前连接的活动事务数。
SELECT @@VERSION as w --返回SQL服务器安装的日期、版本和处理器类型。
六、临时表和表变量
1、局部临时表
以#开头
Create table #名称
(
数据列定义
)
注:临时表的生命周期很短,只在相应的创建中可见(在同一个新建查询中可见)
2、全局临时表
所有用户都可以引用全局临时表,仅当最后一个引用它的会话结束后才删除
以##开头,在别的新建查询中也可见,只要创建的那个一会话结束,就不可
再访问。
3、表变量
表变量的作用域和生命周期与局部变量相同,
对表变量有如下限制
a、不能使用语法select * into 或 insert into @tablename exec 来创建表变量
b、不能在函数中创建表变量
c、不可使用外键和check约束
d、不可有依据表变量的对象,如:触发器和外键作为变量来声明。
格式:
declare @表名 table
(
列定义
)
在同一个批处理中可对这个表变量操作
六、动态SQL
七、错误处理
7.1try ... catch
begin try
...放正常执行的代码
end try
begin catch
...如果发生错误执行这里的代码。
end catch
错误函数:
error_message() 错误消息文本
error_number() 错误编号
error_procedure() 发生错误的存储过程或解发器的名称
error_severity() 错误的严重程度
error_state() 错误的状态