sqlserver 動態(tài)創(chuàng)建臨時表的語句分享
更新時間:2012年01月20日 20:12:11 作者:
開發(fā)業(yè)務需求,需要對一個表作數(shù)據(jù)分析,由于數(shù)據(jù)量較大,而且分析時字段會隨條件相應變化而變化
因此計劃先把數(shù)據(jù)轉(zhuǎn)插入一個臨時表,再對臨時表的數(shù)據(jù)進行分析。
問題點是如何動態(tài)創(chuàng)建臨時表。原先Insus.NET使用下面代碼實現(xiàn):
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)
上面代碼中,有一個函數(shù)[dbo].[Column]() 是取得一系列動態(tài)字段。
其實,上面的代碼一點問題也沒有,是能正確動態(tài)創(chuàng)建一個臨時表,但是接下來代碼,我們無法再使用這個臨時表[dbo].[#Tb] ,因為run第10行代碼EXECUTE(@s)這動作之后,進程已經(jīng)結(jié)束了。這樣說法,動態(tài)創(chuàng)建出來的臨時表,也沒有什么意義了。
為了解決這個問題,Insus.NET想到了一個方法,算是能解決這個問題。既能動態(tài)創(chuàng)建,又能在創(chuàng)建之后,能繼續(xù)使用這個臨時表。
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)
只要細心看了一下,就是可以知道,可以先按正常創(chuàng)建這個臨時表,再動態(tài)修改這個臨時表的字段。這樣做之后,程序run完第10行代碼之后,就能再繼續(xù)使用這個臨時表,如:
SELECT * FROM [dbo].[#Tb]
問題點是如何動態(tài)創(chuàng)建臨時表。原先Insus.NET使用下面代碼實現(xiàn):
復制代碼 代碼如下:
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)
上面代碼中,有一個函數(shù)[dbo].[Column]() 是取得一系列動態(tài)字段。
其實,上面的代碼一點問題也沒有,是能正確動態(tài)創(chuàng)建一個臨時表,但是接下來代碼,我們無法再使用這個臨時表[dbo].[#Tb] ,因為run第10行代碼EXECUTE(@s)這動作之后,進程已經(jīng)結(jié)束了。這樣說法,動態(tài)創(chuàng)建出來的臨時表,也沒有什么意義了。
為了解決這個問題,Insus.NET想到了一個方法,算是能解決這個問題。既能動態(tài)創(chuàng)建,又能在創(chuàng)建之后,能繼續(xù)使用這個臨時表。
復制代碼 代碼如下:
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)
只要細心看了一下,就是可以知道,可以先按正常創(chuàng)建這個臨時表,再動態(tài)修改這個臨時表的字段。這樣做之后,程序run完第10行代碼之后,就能再繼續(xù)使用這個臨時表,如:
SELECT * FROM [dbo].[#Tb]
您可能感興趣的文章:
- 用非動態(tài)SQL Server SQL語句來對動態(tài)查詢進行執(zhí)行
- SQL SERVER 中構(gòu)建執(zhí)行動態(tài)SQL語句的方法
- 分享一下SQL Server執(zhí)行動態(tài)SQL的正確方式
- sql server動態(tài)存儲過程按日期保存數(shù)據(jù)示例
- asp.net Menu控件+SQLServer實現(xiàn)動態(tài)多級菜單
- sqlserver 存儲過程動態(tài)參數(shù)調(diào)用實現(xiàn)代碼
- sqlserver 支持定位當前頁,自定義排序的分頁SQL(拒絕動態(tài)SQL)
- SQL Server中執(zhí)行動態(tài)SQL
相關文章
基于Python的SQL Server數(shù)據(jù)庫實現(xiàn)對象同步輕量級
這篇文章主要介紹了基于Python的SQL Server數(shù)據(jù)庫對象同步輕量級實現(xiàn)方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06在SQL Server的try...catch語句中獲取錯誤消息代碼的的語句
本文為大家詳細介紹下如何在SQL Server的try...catch語句中獲取錯誤消息的代碼,具體示例如下,感興趣的朋友可以參考下哈,希望對大家有所幫助2013-07-07只有mdf文件的數(shù)據(jù)庫附加失敗的修復方法分享(置疑、只讀)
有時候因為某些原因數(shù)據(jù)庫只有mdf文件了,需要附加數(shù)據(jù)庫,會出現(xiàn)一些問題,大家可以參考下面的方法試試2012-02-02linux下apache、mysql、php安裝配置詳細筆記
linux下apache、mysql、php安裝配置筆記,有需要的朋友可以參考下2013-02-02Windows環(huán)境下實現(xiàn)批量執(zhí)行Sql文件
這篇文章主要介紹了Windows環(huán)境下實現(xiàn)批量執(zhí)行Sql文件的相關資料,需要的朋友可以參考下2021-10-10