SQL文で指定フィールドの前に新しいフィールドを挿入する方法を解析します。
1923 ワード
create procaddcolumn@tablenamevarrrhar(30)--表名@colname varhar(30)--加えたい列名@coltype varhar(100)--加えたい列タイプ@colid int--第数列asdeclare@colid_に加えます。max intdeclare@sql varhar(1000)--ダイナミックsql文--------------------------------if not exists(select 1 from ssobjectswhere name=@table and xtype='u ct'u begirlserror 20001'はこの表'return-1 end-indefrom----------------------------------------------------------------------------------------------------------------------------------------id(@tableaname)and name=@colname)begiraserror 20002'この表はすでにこの列があります!'return-1 end----------------この表のcolidは連続的なselect@colid_であることを保証する。max=max(colid)from sysscolumns where id=object_id(@tablename)if@colid>@colid_max or@colid<1 set@colid=@colid+1------------------------------set@sql='alter table'+@table name+'@colname+'@@coltypexec(@sql)select@colid_max=colidfrom sysscolumns where id=object_id(@tableaname)and name=@colnameif@rowcount<>1 begiraserror 20003'は新しい列が成功しません。列のタイプが正しいかどうか確認してください。configre'allow udates'は、1 RECONFIGURE WITH OVERRIDE--新しい列号を一時的に-1 set@sql='up date sysscolumset colid=-1 where id=object uにします。id(''+@tableaname+''')and colid='+cast(@colid_max as varchu(10))exec(@sql)--他の列の列号を1 set@sql='udate sysscolumset colid=colid+1 where id=oject_id('''+@tableaname+'')and colid='+cast(@colid as varhar(10))exec(@sql)--新しい列号をセットアップする@sql='up date sysscolumset colid='+cast(@colid varhar=')id(''+@tableaname+'''')and name='''@@colname+'''''exec(@sql)------------------システムテーブルを修正するスイッチEXEC sp_を閉じるconfigre'allow udates'0 RECONFIGURE WITH OVERRIDEgo 呼び出し方法:exec addcolumn'テーブル名'、'新列名'、'新列タイプ'を加え、いくつかの位置に追加します。例えば、exec addcolumn'test'、'id 2'、'char(10)'2は、id 2を表testの第二の位置に列すると表しています。タイプはchar(10)。