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+''''

总结大体规律:

  1. 拼接sql语句,则其必须被''包裹,也就是'【sql语句】'
  2. '【sql语句】'中。若要调用参数,使用格式'+【参数】+'
  3. '【sql语句】'中。若要使用',使用格式''代替

Null判断

若在if语句中判断一个值是否为null必须使用if(@appVersion is NULL)if(@appVersion = NULL) 或 if(@appVersion = null)都不行。被这个坑了好几次,老是忘。

posted @ 2022-03-11 09:48  几个酒菜成这样  阅读(224)  评论(0编辑  收藏  举报