我正在使用臨時表和動態查詢以及。我的要求是在臨時表中我插入一些獨特的價值。之後,從臨時表中我得到唯一的密鑰和執行內部條件。SQL Server:在動態查詢中執行Temp表
這裏是代碼
臨時表:
Create Table #TempUniqueKeyTable
(
ID BIGINT IDENTITY PRIMARY KEY,
ukey uniqueidentifier
)
INSERT INTO #TempUniqueKeyTable (ukey)
SELECT followedTo
FROM tblFollowers
WHERE FollowedBy = @uniqueKey
INSERT INTO #TempUniqueKeyTable (ukey)
SELECT connectionRequestTo
FROM tblConnection
WHERE connectRequestBY = @uniqueKey
INSERT INTO #TempUniqueKeyTable (ukey)
SELECT connectRequestBY
FROM tblConnection
WHERE connectionRequestTo = @uniqueKey
動態查詢:
SET @QueryHeader = 'SELECT * from XYZ B'
SET @MainQuery = @QueryHeader
SET @MainQuery += ' WHERE B.uniquekey in (SELECT distinct ukey FROM #TempUniqueKeyTable WHERE ukey='''+CONVERT(NVARCHAR(MAX),@UniqueKey)+''')) '
EXEC (@MainQuery)
它不是在條件工作。這部分不返回任何值
SELECT distinct ukey
FROM #TempUniqueKeyTable
WHERE ukey = ''' + CONVERT(NVARCHAR(MAX), @UniqueKey) + ''')
當我運行PRINT
命令顯示它像
SELECT *
FROM XYZ B
WHERE B.uniquekey IN (SELECT DISTINCT ukey
FROM #TempUniqueKeyTable
WHERE ukey = '1EA8658C-F978-4DC7-9ABF-E4FF253A2284')
生成的查詢應該是這樣
SELECT * from XYZ B
WHERE B.uniquekey in ('A5B6BC01-5FEB-4554-90A7-4B5ADCC00D36','F75C6303-40EB-4119-A45A-D122E8118FA4')
您必須在動態聲明中聲明/創建它。只需將您的字符串構建爲單個語句即可。 – scsimon
@scsimon那麼代碼是什麼,我不知道該寫什麼。我嘗試了很多東西 – Anjyr
不用擔心。我在我的手機上,但有人會在一分鐘內得到答案,我確定。 – scsimon