概述
局部变量是用户可自定义的变量,它的作用范围仅在程序内部。
局部变量必须以@开头,而且必须先用DECLARE 命令说明后才可使用。其说明形式如下:
DECLARE @变量名 变量类型[,@变量名变量类型…]
在Transact-SQL 中不能像在一般的程序语言中一样使用“变量=变量值”来给变量赋值,必须使用SELECT 或SET 命令来设定变量的值。
全局变量是SQL Server 系统内部使用的变量,其作用范围并不局限于某一程序,而是任何程序均可随时调用。
全局变量不是由用户的程序定义的,它们是在服务器级定义的,只能使用预先说明及定义的全局变量。
引用全局变量时必须以“@@”开头。
局部变量的名称不能与全局变量的名称相同,否则会在应用中出错。
在Transact-SQL 中可使用两类注释符:
1.ANSI 标准的注释符“--”用于单行注释。
2.与C 语言相同的程序注释符号,即“/*……*/”,/* 用于注释文字的开头,*/用于注释文字的结尾,可在程序中标识多行文字为注释。
如果不使用程序块,IF 或ELSE 只能执行一条命令。
IF ELSE 可以进行嵌套,在Transact-SQL 中最多可嵌套32 级。
如果所有WHEN子句后的表达式的值都为假,则返回ELSE后的表达式的值
如果在CASE语句中没有ELSE子句,则CASE表达式返回NULL。
如果运行过程产生了多个错误,SQL Server 系统将返回绝对值最大的数值;
RETURN 语句不能返回NULL值。
DECLARE 命令用于声明一个或多个局部变量、游标变量或表变量。
在用DECLARE命令声明之后,所有的变量都被赋予初值NULL。
需要用SELECT 或SET 命令来给变量赋值。
变量类型可为系统定义的或用户定义的类型,但不能为TEXT、NTEXT和IMAGE类型。
CURSOR 指名变量是局部的游标变量。
如果变量为字符型,那么在data_type 表达式中应指明其最大长度,否则系统 认为其长度为1。PRINT 命令向客户端返回一个用户自定义的信息,即显示一个字符串、局部变量或全局变量。
如果变量值不是字符串的话,必须先用数据类型转换函数CONVERT()将其转换为字符串。
SELECT 命令可以一次给多个变量赋值。
当表达式expression 为列名时,SELECT 命令可利用其查询功能一次返回多个值,变量中保存的是其返回的最后一个值。
如果SELECT命令没有返回值,则变量值仍为其原来的值。
当表达式expression 是一个子查询时,如果子查询没有返回值,则变量被设为NULL。
SET 命令一次只能给一个变量赋值。
SET 命令功能更强且更严密,因此,SQL Server 推荐使用SET 命令来给变量赋值。
可以在SELECT 语句的SELECT 和WHERE 子句以及表达式中使用算术函数。
While @@fetch_status=0
系统过程主要存储在master 数据库中并以sp_为前缀,并且系统存储过程主要是从系统表中获取信息,从而为系统管理员管理SQL Server 提供支持。
CREATE PROCEDURE Query_Study
(
@sno char(6),
@sn char(20) OUTPUT,
@dept char(10) OUTPUT
)
Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。
Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。
更新事务类似于在删除之后执行插入;首先旧行被复制到 deleted 表中,然后新行被复制到触发器表和 inserted 表中。
最后
以上就是端庄外套为你收集整理的【期末复习】存储过程与触发器的全部内容,希望文章能够帮你解决【期末复习】存储过程与触发器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复