高级SQL语句

变量:

对于变量,无论是赋值还是引用,都必须在变量名前面加一个“@"符号。

变量的声明:declare @var_name data_type

变量的赋值:set declare @var_name=value

      select @var_name=col from table,注意这里的col必须是table表中返回的一个单值。

函数的创建:

标量函数:函数返回一个值,其创建过程大致为:

create function func_name(@para1 data_type, ...) returns data_type
as
begin
...
return @ret_value
end

表值函数:函数返回一个元组,其创建过程大致为:

create function func_name(@para1 data_type, ...) returns table
as
return
(
...
)

可以在returns table部分定义返回表的列名以及变量类型。

一些常见的函数:

SQL语句中有使用频率比较高的函数,这里我稍微整理了下

convert函数,用于进行变量类型转换,使用规则为:convert(data_type, @var_name),将变量@var_name的类型转换成data_type类型

cast函数,也是用于进行变量转换的,使用规则为:cast(@var_name as data_type),将变量@var_name的类型转换成data_type类型

print函数,用于打印一个变量的值,使用规则为:print @var_name

如果avg的参数是整数,但是要求返回值是小数的话,需要先将这个整数型的参数转换成小数再参与avg运算。

if语句:

if(condition)
begin
...
end
else
begin
...
end

常规的循环语句:

while condition
begin
...
end

游标循环遍历:

declare @var_name data_type                          --声明一个变量用于存储游标中的值
declare c cursor for select col from table           --声明一个游标,来存储表的一列数据
open c                                               --打开游标
fetch next from c into @var_name                     --将游标中的值放入var_name变量中以进行操作
while @@FETCH_STATUS = 0                             --@@FETCH_STATUS是一个全局变量,用于判断游标中的值是否遍历完毕
begin
...
fetch next from c into @var_name                     --这一步相当于常规循环中的步长语句
end
close c                                              --关闭游标
deallocate c                                         --释放游标占的内存

 创建用户定义聚合:

参考链接:创建用户定义聚合

以及调用CLR时需要注意的几个问题:

原文地址:https://www.cnblogs.com/TheFutureIsNow/p/10807622.html