十三、SQLSERVER编程
1、DECLARE,SET,PRINT 语句
1)、局部变量 和 全局变量
局部变量(local variable,以 @为变量名称开头)
(1)局部变量定义
语法:DECLARE @VariableName Data_Type
示例:declare @name varchar(50)
(2)局部变量赋值
赋值格式一:
语法:SET 变量名 = 表达式
示例:SET @name = 'micro'
赋值格式二:
语法:SELECT 变量名 = 表达式或 SELECT子句
示例:SELECT @name = 'micro'
全局变量(global variable,@@为名称头)
2)、DECLARE语句
DECLARE语句是数据声明语句,主要作用是声明局部变量、函数、存储过程或游标变量等;
语法: DECLARE { { @local_variable [AS] data_type } | [= value] } [,...n]
示例:
DECLARE @username VARCHAR(20)='micro'
3)、SET语句
SET语句为数据赋值语句,可以对局部变量进行赋值
语法:SET { @local_variable = value | expression }
示例:
DECLARE @username VARCHAR(20) SET @username = 'micro'
4)、PRINT语句
PRINT语句为数据输出语句,可以向客户端返回用户定义的信息
语法:PRINT msg_str | @local_varible | string_expr
示例:
DECLARE @username VARCHAR(20) SELECT @username = 'micro' PRINT @username
2、定义语句块 BEGIN...END
示例:
If Exists(SELECT * from course where cno='2') Begin Delete course where cno='2' Print '课程号为2的课程已删除!' End Else Print '课程号为2的课程不存在!'
3、循环 WHILE、BREAK、CONTINUE
示例:
Declare @i int, @sum int
Set @i=0
set @sum=0
While @i>=0
Begin
set @i=@i+1
if @i<=100
if (@i%2)=0
Continue
else
set @sum=@sum+@i
else
Begin
print '1到100之間的奇數和='+str(@sum)
break
End
End
4、条件语句 IF…ELSE
示例:
Select @var=(select sum(salary) from employees) IF @var>10000 If @var<20000 Print '工资总和在10000到20000之间' else print '工资总和大于20000' Else print '工资总和小于10000'
5、条件分支 case when then
示例:
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
6、批处理结束 GO
示例:
USE [databaseName] GO
7、返回值 out | return
示例:
declare @count int
declare @query nvarchar(max)
set @query = 'select @count = COUNT(*) from LoadTest2010.dbo.LoadTestReport'
EXEC sp_executesql @query,
N'@count int OUTPUT',
@count OUTPUT
select @count
8、AS的用法
(1) 定义变量类型
示例:
DECLARE @UserName AS VARCHAR(50)='micro'
(2)取别名
示例:
SELECT OrderID AS '订单ID',CustID AS '顾客ID',OrderDate AS '订单日期' FROM Orders
(3)转换类型
SELECT CAST('110' AS INT) --110
(4)创建视图,表示基表来源
CREATE VIEW ViewDemo AS SELECT * FROM Orders
9、使用数据库 USE tableName
示例:
USE [databaseName]
10、SET ANSI_NULLS {ON | OFF}
指定在对空值使用等于 (=) 和不等于 (<>) 比较运算符时,这些运算符的 SQL-92 遵从行为。
11、SET QUOTED_IDENTIFIER ON
表示使用 引用标识符,标识符可以用双引号分隔,但是,文字必须用单引号分隔。
12、SET NOCOUNT { ON | OFF }
使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。
12、等待 Waitfor
waitfor time '23:08:00' --等到晚上11点零8分后才执行select语句 select * from employee