如何将带条件的简单查询转换为动态查询

时间:2015-06-19 02:05:20

标签: sql sql-server

我有像

这样的表格
IF OBJECT_ID('tempdb..#t') IS NOT NULL 
DROP TABLE #t
GO
IF OBJECT_ID('tempdb..#tt') IS NOT NULL 
DROP TABLE #tt
GO
CREATE TABLE #t(ID INT,Name varchar(10))
insert into #t (ID,name)values (1,'mohan'),(2,'mohan')

CREATE TABLE #tt(ID INT,Name varchar(10))
insert into #tt (ID,name)values (1,'Raju'),(2,'ram')

我创建了一个程序,我需要根据状态调用

CREATE PROCEDURE usp_Getresult
(
@statusval char(2)
)
AS 
BEGIN 
IF @statusval = '01'
BEGIN 
Select * from #t
END 
IF @statusval = '02'
BEGIN 
Select * from #tt
END
IF @statusval = '00'
BEGIN 
Select P.ID,P.Name from (
Select * from #t
UNION ALL
Select * from #tt)P
END
END
EXEC usp_Getresult '00'=> '01' or '02'

在我原来的程序中它有更多的条件我只是不想写入如果条件我希望这个转换转换成动态查询即使我知道转换成动态但如果我有多个条件,那么我需要如何继续

1 个答案:

答案 0 :(得分:4)

如果2个表架构完全相同,我会选择正常的查询来获得强大的智能

CREATE PROCEDURE usp_Getresult
(
    @statusval char(2)
)
AS 
BEGIN 

    Select * from #t WHERE @statusval IN ('00', '01')
    UNION ALL
    Select * from #tt WHERE @statusval IN ('00', '02')

END