如何實(shí)現(xiàn)SQL Server臨時(shí)表的創(chuàng)建?
以下的文章主要是對SQL Server臨時(shí)表的創(chuàng)建的實(shí)際操作步驟,以及在實(shí)際操作中我們要用到的實(shí)際應(yīng)用代碼的介紹,我在一個(gè)信譽(yù)度很好的網(wǎng)站找到一個(gè)關(guān)于其相關(guān)內(nèi)容今天拿出來供大家分享。
- Create Table #Test(a int)
 
如果傳來的SELECT語句不是以'select'開頭,自動(dòng)修改
- If Left(Lower(Ltrim(@Select_Command)),6) <> 'select' Select @Select_Command = 'Select ' + @Select_Command
 
將開頭‘SELECT’去掉
- Select @Select_Command_Temp = Lower(Ltrim(@Select_Command))
 - If Left(@Select_Command_Temp,6) = 'select' Select @Select_Command_Temp = Right(@Select_Command_Temp,Len(@Select_Command_Temp) - 7)
 
取各保留字位置,以便獲得表的列表
- Select @From_Pos = CHARINDEX(' from ',@Select_Command_Temp)
 - Select @Where_Pos = CHARINDEX(' where ',@Select_Command_Temp)
 - Select @Having_Pos = CHARINDEX(' having ',@Select_Command_Temp)
 - Select @Groupby_Pos = CHARINDEX(' groupby ',@Select_Command_Temp)
 - Select @Orderby_Pos = CHARINDEX(' orderby ',@Select_Command_Temp)
 - If @Where_Pos > 0 Select @Temp_Pos = @Where_Pos
 - If @Having_Pos > 0 And @Having_Pos < @Temp_Pos Select @Temp_Pos = @Having_Pos
 - If @Groupby_Pos > 0 And @Groupby_Pos < @Temp_Pos Select @Temp_Pos = @Groupby_Pos
 - If @Orderby_Pos > 0 And @Orderby_Pos < @Temp_Pos Select @Temp_Pos = @Orderby_Pos
 
SQL Server臨時(shí)表的創(chuàng)建中取表列表
- If @Temp_Pos > 0
 - Begin
 - Select @Table_List = SUBSTRING(@Select_Command_Temp,@From_Pos + 6 ,@Temp_Pos - @From_Pos - 1)
 - End
 - Else
 - Begin
 - Select @Table_List = SUBSTRING(@Select_Command_Temp,@From_Pos + 6 ,Len(@Select_Command_Temp) - @From_Pos - 1)
 - End
 - Select @Column_Syntax = ''
 
只列出欄位
- Select @Select_Command_Temp = Left(@Select_Command_Temp,@From_Pos - 1)
 - While Len(@Select_Command_Temp) > 0
 - Begin
 
取逗號(hào)位置
- Select @Temp_Pos = CHARINDEX(',',@Select_Command_Temp)
 
初次取欄位名稱
- If @Temp_Pos > 0
 - Begin
 - Select @Column_Name = Left(@Select_Command_Temp,@Temp_Pos - 1)
 - End
 - Else
 - Begin
 - Select @Column_Name = @Select_Command_Temp
 - End
 
取表名和欄位名(可能是‘*’)
- If CHARINDEX('.',@Column_Name) > 0
 - Begin
 - Select @Table_Name = Left(@Column_Name,CHARINDEX('.',@Column_Name) - 1)
 - Select @Column_Name = Right(@Column_Name,Len(@Column_Name) - CHARINDEX('.',@Column_Name))
 - End
 - Else
 - Begin
 - Select @Table_Name = @Table_List
 - End
 
欄位出現(xiàn)'*'
- If CHARINDEX('*',@Column_Name) > 0
 - Begin
 - Select @Column_Name = ''
 - Select @Loop_Seq = 1
 
SQL Server臨時(shí)表的創(chuàng)建中我們要取欄位個(gè)數(shù)
- Select @Column_Count = Count(*)
 - From SysColumns
 - Where Id = Object_Id(@Table_name)
 - While @Loop_Seq <= @Column_Count
 - Begin
 
取欄位名稱,欄位類型,長度,精度,小數(shù)位
- Select @Column_Name_Temp = SysColumns.Name,
 - @Column_Type_Temp = Lower(SysTypes.Name),
 - @Column_Length_Temp = SysColumns.Length,
 - @Column_Xprec_Temp = SysColumns.Xprec,
 - @Column_Xscale_Temp = SysColumns.Xscale
 - From SysColumns,SysTypes
 - Where SysColumns.Id = Object_Id(@Table_name) And
 - SysColumns.Colid = @Loop_Seq And
 - SysColumns.XuserType = SysTypes.XuserType
 
形成欄位語法表達(dá)式
- Select @Column_Syntax_Temp = Case When @Column_Type_Temp In ('datetime','image','int') Then @Column_Name_Temp + ' ' + @Column_Type_Temp
 
以上的相關(guān)內(nèi)容就是對SQL Server臨時(shí)表的創(chuàng)建的介紹,望你能有所收獲。
【編輯推薦】















 
 
 
 
 
 
 