[英]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.