SQLServer 存储过程 自定义函数 注意事项
SQLServer 存储过程 自定义函数 注意事项
赋值
两种赋值方法
declare @appVersion nvarchar(100)
-- 第一种
set @appVersion = (select top 1 AppVersion from AppList order by Dataid desc
-- 第二种
select top 1 @appVersion = AppVersion from AppList order by Dataid desc
在语句中调用参数
一般如果是整形数字都可以直接调用,比如各类编号
declare @appSN int
declare @appName nvarchar(100)
select top 1 AppVersion from AppList where AppSN=@appSN order by Dataid desc
但如果是字符串或日期等需要' '
修饰的参数需要用''
来转义'
declare @appName nvarchar(100)
select top 1 AppVersion from AppList where AppName='' + @appName + '' order by Dataid desc
最后,参数可能是表名或列名。我学到的办法是,再新建一个变量用于拼接sql语句,再执行这个拼接成的sql语句
declare @TypeSN nvarchar(100)
declare @TableName nvarchar(100)
declare @sql nvarchar(MAX)
declare @AppSN int
declare @AppName int
set @sql = 'update '+@TableName+' set AppVersion=1001 where AppSN=1'
exec(@sql)
-- 当然还有多种延伸
-- 1.表名需要预处理,例:一个固定字符与参数的部分截取
set @TableName = 'APP_'+substring(@TypeSN,1,2)
-- 2.拼接的SQL语句中需要使用''。使用 '' 代替 '
set @sql = 'update '+@TableName+' set AppVersion=1002 where AppName=''国服'''
-- 3.拼接的SQL语句中还有其他数值参数。
set @sql = 'update '+@TableName+' set AppVersion=1002 where AppSN='+@AppSN+''
-- 4.拼接的SQL语句中还有其他数值参数。且该参数必须用''修饰
set @sql = 'update '+@TableName+' set AppVersion=1002 where AppName='''+@AppName+''''
总结大体规律:
- 拼接sql语句,则其必须被‘’包裹,也就是
'【sql语句】'
- 在
'【sql语句】'
中。若要调用参数,使用格式'+【参数】+'
- 在
'【sql语句】'
中。若要使用'
,使用格式''
代替
Null判断
若在if语句中判断一个值是否为null必须使用if(@appVersion is NULL)
。if(@appVersion = NULL)``if(@appVersion = null)
都不行。被这个坑了好几次,老是忘。