数据库技术与应用 --SQL Server2005 第9章 Transact-SQL程序设计.doc
文本预览下载声明
第9章 Transact-SQL程序设计
EXEC sp_addtype test_add,Varchar(10),NOT NULL
DECLARE @int_var int
SELECT @int_var =12 /*给@int_var赋值*/
SELECT @int_var /*将@int_var的值输出到屏幕上*/
在一条语句中可以同时对几个变量进行赋值,例如,
DECLARE @LastName char(8),@Firstname char(8),@BirthDate datetime
SELECT @LastName=Smith,@Firstname=David,@BirthDate=1985-2-20
SELECT @LastName,@Firstname,@BirthDate
【例9-1】 使用SELECT语句从customer表中检索出顾客编号为C0002的行,再将顾客的名字赋给变量@customer。
DECLARE @customer varchar(40),@curdate datetime
SELECT @customer=customer_name,@curdate=getdate()
FROM customer
WHERE customer_id=C0002
【例9-2】 将sell_order表中的transporter_id列值为“T001”、goods_id列值为“G00003”的order_num列的值赋给局部变量@order_num。
DECLARE @order_num float
UPDATE sell_order
SET @order_num=order_num*2
/*@order_num为局部变量,order_num为sell_order表中的列名称*/
WHERE transporter_id=T001 AND goods_id=G00003
【例9-3】 计算employee表的记录数并赋值给局部变量@rows。
DECLARE @rows int
SET @rows=(SELECT COUNT(*) FROM employee)
SELECT @rows
【例9-4】 使服务器产生服务,并显示错误号。
raiserror(miscellaneous error message,16,1) /*产生一个错误*/
if @@error0
SELECT @@error as last error
【例9-5】 捕捉例9-4中服务器产生的错误号,并显示出来。
DECLARE @my_error int
RAISERROR(miscellaneous error message,16,1)
SELECT @my_error=@@error
IF @my_error0
SELECT @my_error as last error
【例9-6】 使用@@spid返回当前用户进程的ID。
SELECT @@spid as ID,SYSTEM_USER AS Login Name,USER AS User Name
【例9-7】 在Sales数据库中创建jobs表,并在表中插入带有identity列的行,并且使用@@identity来显示新行中所用的identity值。
CREATE TABLE jobs (
[job_id] [smallint] IDENTITY (1, 1) NOT NULL ,
[job_desc] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[min_lvl] [tinyint] NOT NULL ,
[max_lvl] [tinyint] NOT NULL
) ON [PRIMARY]
INSERT INTO jobs(job_desc,min_lvl,max_lvl)
VALUES(Accountant,12,125)
SELECT @@IDENTITY AS Identity
【例9-8】 创建两个过程:innerproc和outerproc。outerproc过程用来调用innerproc过程,innerproc过程用来显示@@nestlevel的设置。
① 定义innerproc为内嵌过程。
CREATE PROCEDURE innerproc as
SELECT @@nestlevel AS Inner Level
GO
② 定义outerproc为外层过程。
CREATE PROCEDURE outerproc as
SELECT @@nestlevel AS Outer Level
EXEC innerproc
GO
③
显示全部