iT邦幫忙

0

MSSQL 是否可以將 cloumn 轉換成 table

  • 分享至 

  • xImage
DECLARE @TABLE VARCHAR(30) 

SELECT TOP 99.NAME INTO #TEST  FROM SYS.TABLES WHERE NAME=@TABLE

DECLARE MYCURSOR CURSOR FOR
SELECT NAME FROM #TEST

OPEN MYCURSOR

FETCH NEXT FROM MYCURSOR INTO @TABLE

WHILE @@FETCH_STATUS=0
BEGIN

SELECT *  FROM @TABLE

FETCH NEXT FROM MYCURSOR INTO @TABLE

END  
CLOSE MYCURSOR
DEALLOCATE MYCURSOR

DROP TABLE #TEST

如題,請問如果我想一次性搜尋整個資料庫table 所有欄位,目前@table 是字串,但該如何轉換成 資料表?
如果我宣告@table 為 table,請問該如何塞值呢?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
實習工程師
iT邦新手 1 級 ‧ 2023-02-04 15:50:32
最佳解答

如題,請問如果我想一次性搜尋整個資料庫table 所有欄位,目前@table 是字串,但該如何轉換成 資料表?

SELECT 
	TABLE_NAME 
	,COLUMN_NAME
	,DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS 

如果我宣告@table 為 table,請問該如何塞值呢?

SELECT *  FROM @TABLE  改成 EXEC ('SELECT * FROM ' + @TABLE)
看更多先前的回應...收起先前的回應...

實習工程師

感謝大神的幫助
抱歉可能我當初說不清楚

是否可以用cursor 或其他方式 一次性執行類似於這樣
Select * From Table1
Select * From Table2
Select * From Table3
Select * From Table4

當初構想是將sys.tables裡面的name放入 #test
用#test的column當成table 逐個執行

因為table有97個,總不能一行一行執行,覺得重工

DECLARE @TABLE VARCHAR(30) 

CREATE TABLE #TmepTable (
	tb VARCHAR(50)
)
INSERT INTO #TmepTable  SELECT NAME FROM SYS.TABLES

DECLARE @tb VARCHAR(50)
DECLARE  XX CURSOR FOR
      SELECT tb FROM #TmepTable
OPEN XX
FETCH NEXT FROM XX into @tb
WHILE @@FETCH_STATUS = 0
BEGIN
	  EXEC ('SELECT * FROM ' + @tb)
      FETCH NEXT FROM XX into @tb
END
CLOSE XX ;
DEALLOCATE XX;

DROP TABLE #TmepTable

後來才發現你下面那段寫錯...
更正了 你再看看。

可以了,非常感謝!!!
看來還要多熟練相關語法,這問題困擾了我快5天
再次感謝幫忙/images/emoticon/emoticon32.gif

不會~一起加油~

我要發表回答

立即登入回答