簡體   English   中英

使用表名獲取Sql Server表

[英]Get Sql Server Table using Table Name

我有一個場景,我需要sql server object (或特定的TABLE ),而我只有table name. 我嘗試使用SQL functions ,但對我的事業沒有幫助。

例如,我有一個名為 USERS 的表,其中包含列用戶 ID 和用戶名。 示例數據是: USERS(1, 'user 1') USERS(2, 'user 2')。

另一個名為 RequestsGenerated 的表包含列 entityTableName、columnName、entityid 和 requestName。 示例數據是:RequestsGenerated('dbo.USERS', 'userid', 1, 'Leave Request')

我想在結果集中看到的是所有具有適當用戶的請求名稱

下面復制了示例數據/查詢:

CREATE TABLE #TMPUSERS(userid int, username varchar(50));
INSERT INTO #TMPUSERS VALUES (1, 'user 1')
INSERT INTO #TMPUSERS VALUES (2, 'user 2')

CREATE TABLE #TMPREQUESTS(requestid int, requesttype varchar(50), tablename varchar(50), columnname varchar(50), entityid int)
INSERT INTO #TMPREQUESTS VALUES (1, 'Leave Request', 'dbo.#TMPUSERS', 'userid', 1)

--select statement here, that return all records from #tmprequests with username

DROP TABLE #TMPREQUESTS
DROP TABLE #TMPUSERS

您可以使用動態 sql 來獲得此結果。

DECLARE @T_TABLE AS nvarchar(100) = 'TBL_ITEM_MASTER'
EXEC ('SELECT * FROM '+ @T_TABLE) 

或者嘗試這樣的事情,

DECLARE @T_TABLE_RSLT AS nvarchar(2000) 
SELECT TOP 1 @T_TABLE_RSLT = ('SELECT U.*,RG.requestName FROM '+entityTableName+ ' U 
    INNER JOIN RequestsGenerated RG ON RG.entityid = U.'+columnName +'')
FROM RequestsGenerated
EXEC (@T_TABLE_RSLT)

我終於想出了解決這個問題的方法。 分享,可能對其他人有幫助:

CREATE TABLE #TMPUSERS(userid int, username varchar(50));
INSERT INTO #TMPUSERS VALUES (1, 'user 1')
INSERT INTO #TMPUSERS VALUES (2, 'user 2')

CREATE TABLE #TMPREQUESTS(requestid int, requesttype varchar(50), tablename varchar(50), columnname varchar(50), entityid int)
INSERT INTO #TMPREQUESTS VALUES (1, 'Leave Request', 'dbo.#TMPUSERS', 'userid', 1)

--select statement here, that return all records from #tmprequests with username
DECLARE @SQL VARCHAR(MAX)
SELECT @SQL = 'select tr.requestid, tr.requesttype, tu.username from #TMPREQUESTS tr INNER JOIN ' + tablename + ' tu ON tr.entityid = tu.' + columnname  from #TMPREQUESTS
EXEC(@SQL)

DROP TABLE #TMPREQUESTS
DROP TABLE #TMPUSERS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM