SQLServer 儲存過程 自定義函式 注意事項
阿新 • • 發佈:2022-03-11
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)
都不行。被這個坑了好幾次,老是忘。