一、 变量
1. 形式: @x (局部), @@x(全局)
2. 定义: declare @x
3. 赋值:Set @x = ?
4. 作用:
-
通用化
-
存储在服务器
5. 存储过程(预编译过的T-SQL语句)
-
优点:
-
完成复杂的运算
-
保证数据的安全性和完整性
-
效率高
-
网络负载低
-
Create proc Pexa1 @SN char(10)
As
begin
select Sname
From Student
where sdept in
(select sdept
From Student
where Sname = @SN
)
end
-
系统存储过程
存储过程的前缀: SP_xxx
-
创建存储过程的语法
CREATE PROC 存储过程 形参表
AS
begin T-SQL 语句块 end
-
形参表
@X1 类型1, @X2 类型2,......, @Y1 类型n Output
输入形参 输出形参
注: 不是所有变量都做性参表
-
实例
Create Proc PEXA2 @x int
AS
begin
Select Sno, Avg(Score)
From SC
group by Sno having AVG(Score) >= @x
end
--例2
Create Proc PEXA3
AS
begin
Select Sno
From SC
Where Sno Not in
(Select Sno
From SC
where Cno = '3'
)
end
EXEC PEXP3
EXEC PEXP1 '刘晨'
5. 删除 Drop Proc 名
6. 修改:
ALTER Proc p1
7. 实例
--在Student表中,创建指定学号的删除操作的存储过程
Create Proc p2
AS
begin
delete from Student
where Sno = @sn
end
--将student表中,sno的后一位是2的学生的学号、姓名分别赋值给 变量X, Y
--问题转换: 查询Sno的后一位是2的学生的学号、姓名
declare @x char(10), @Y varchar(9) --定义变量
Select @X = sno, @Y = Sname --为变量赋值
From Student
where right(sno, 1) = '2' --倒数第二位 left(rihgt(sno, 2), 1)
select @X, @Y --利用Select语句显示变量内容
Select 语句功能推广
1: 可同时为多个变量赋值, 其值来自数据库.
2: 可让外部程序访问数据库
7.命令
--在屏幕上显示某个'借书证号'到期图书的'图书编号'(借书期限为30天)
Declare @借书证号 char(10), @图书编号 char(6)
SET @借书证号 = '00006' -- 输入变量初始化
Select @图书编号 = books.图书编号
From borrow, books
where borrow.图书编号 = books.图书编号
and 还书日期 IS NULL
and datediff(day, 借书日期, getdate()) > 30
and 借书证号 = @借书证号
PRINT '超期图书是: ' + @图书编号