2013-03-21 37 views
0

我哪裏有conditions.How在一個T-SQL 條件表連接一臺使用存放在那裏條件在表中的動態SQL語句

SAL 
sal >100 
sal < 100 
sal=500 

SELECT SAL into #sal from condtbl 
Select Top 1 @sal = event From #sal 

`select * from emp where @sal` 

我怎麼能做到這樣的事情?

回答

0

我不認爲這是一個很好的想法,有很多因素可以打破你的查詢,在條件表上有正確的列,除了你需要處理的事實dynamic sql 。無論如何,這是你想要的東西的一種方法:

DECLARE @sal NVARCHAR(MAX), @sql NVARCHAR(MAX) 

SELECT @sal = SAL 
FROM condtbl 
WHERE IdCondition = 1 -- an example, don't rely on TOP 1 without ORDER BY 

SET @sql = 'SELECT * FROM emp WHERE ' + @sal 

EXEC(@sql) 
0

如果你的條件被存儲在表中作爲有效的TSQL,那麼動態TSQL的方法是最好的一段路要走。

不知道它是否適合您,但如果您可以重新評估方法,則可能比存儲這樣的條件更好。例如:

select * from emp where [sal] BETWEEN @minSAL AND @maxSAL 

這就要求你有2個輸入變量,你可以看到 - 但它會覆蓋所有3個鹼基(>,<,=)只是取決於你傳遞的值。