나는 내가 필요로하는 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
마침내이 문제를 해결할 방법을 찾았습니다. 공유는 다른 사람에게 도움이 될 수 있습니다.
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
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다