程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> sqlserver 動態創建臨時表的語句分享

sqlserver 動態創建臨時表的語句分享

編輯:更多數據庫知識

因此計劃先把數據轉插入一個臨時表,再對臨時表的數據進行分析。
問題點是如何動態創建臨時表。原先Insus.NET使用下面代碼實現:
復制代碼 代碼如下:
DECLARE @s NVARCHAR(MAX) = '
IF OBJECT_ID(''[dbo].[#Tb]'') IS NOT NULL
DROP TABLE [dbo].[#Tb]
CREATE TABLE [dbo].[#Tb]
(
[xxx] INT,
[xxx] NVARCHAR(50),
'+ [dbo].[Column]() + '
)'
EXECUTE(@s)


上面代碼中,有一個函數[dbo].[Column]() 是取得一系列動態字段。
其實,上面的代碼一點問題也沒有,是能正確動態創建一個臨時表,但是接下來代碼,我們無法再使用這個臨時表[dbo].[#Tb] ,因為run第10行代碼EXECUTE(@s)這動作之後,進程已經結束了。這樣說法,動態創建出來的臨時表,也沒有什麼意義了。
為了解決這個問題,Insus.NET想到了一個方法,算是能解決這個問題。既能動態創建,又能在創建之後,能繼續使用這個臨時表。

復制代碼 代碼如下:
IF OBJECT_ID('[dbo].[#Tb]') IS NOT NULL
DROP TABLE [dbo].[#Tb]
CREATE TABLE [dbo].[#Tb]
(
[xxx] INT,
[xxx] NVARCHAR(50)
)
DECLARE @tb NVARCHAR(MAX) = 'ALTER TABLE [dbo].[#Tb] ADD ' + [dbo].[Column]()
EXECUTE(@tb)


只要細心看了一下,就是可以知道,可以先按正常創建這個臨時表,再動態修改這個臨時表的字段。這樣做之後,程序run完第10行代碼之後,就能再繼續使用這個臨時表,如:
SELECT * FROM [dbo].[#Tb]

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved