我有像
这样的表格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'
在我原来的程序中它有更多的条件我只是不想写入如果条件我希望这个转换转换成动态查询即使我知道转换成动态但如果我有多个条件,那么我需要如何继续
答案 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