平時總會寫一些儲存過程,有的引數基本上是和表的字段一一對應,如果c/p,既麻煩又容易出錯,下面的sp可以生成指定表的字段和引數列表:
set quoted_identifier on
goset ansi_nulls on
go--exec cassababuildsp 'dbo.categories'
create procedure cassababuildsp
@tablename sysname
asbegin
declare @numtypes nvarchar(80)
select @numtypes = n'[tinyint],[**allint],[decimal],[real],[money],[float],[numeric],[**allmoney]'
select name as columnname, '['+ name + '], 'as bracketedcolumn,'@' + name + ' ' + upper(type_name(xusertype)) +
case
when type_name(xtype) in('varchar','char')
then '(' + convert(varchar(5),length) + ')'
when type_name(xtype) in('nvarchar','nchar')
then '('+ convert(varchar(5),length/2) + ')'
when charindex('[' + type_name(xtype) + ']', @numtypes) > 0
then '(' + convert(varchar(5),columnproperty(id, name, 'precision')) + ','
else '' end
+case
when charindex('[' + type_name(xtype) + ']', @numtypes) > 0
then convert(varchar(5),odbcscale(xtype,xscale)) + ')'
else '' end
+ ',' as spparameters,
'[' + name + '] = @' + name + ',' as updatesql
from syscolumns where id=object_id(@tablename) order by colid
end效果如下圖:
再談引數列表
我記得上次寫了一篇文章,說用引數傳遞的方式來縮小類中的成員變數的作用範圍。實踐證明,這種做法是正確的,只是有的時候,過長的引數列表讓 看起來不舒服 不是有編碼規範嗎,規定引數列表中的引數不能超過5個 但是對於降低 的bug產出率來說,這點不舒服是必須忍受的,有什麼便宜都佔盡的道理呀 又囉嗦了 今天我...
Bash引數列表
command meaning represent all arguments the number of arguments 0the script name 1the first argument name the ten argument name basename get the file ...
可變引數列表
模擬實現printf函式 va list是在c語言中解決變參問題的一組巨集,所在標頭檔案 include 用於獲取不確定個數的引數 va start,函式名稱,讀取可變引數的過程其實就是在堆疊中,使用指標,遍歷堆疊段中的引數列表,從低位址到高位址乙個乙個地把引數內容讀出來的過程 va arg,這個巨...