我想编写一个看起来像
的存储过程CREATE PROCEDURE [dbo].[get_ExampleDate]
@MyDate DateTime,
@ApplyDate DateTime,
@SomeString varchar(6) OUTPUT
AS
BEGIN
SELECT *
FROM MyTable
WHERE DateFrom <= MyDate
AND DateTo >= MyDate
END
如果此查询返回一个结果,我想返回它。但是,如果它返回两个结果,那么我想让它运行另一个查询,查看ApplyDate以获得单个结果。
答案 0 :(得分:2)
将结果放入临时表中,然后在返回数据或其他内容之前检查rowcount。
CREATE PROCEDURE [dbo].[get_ExampleDate]
@MyDate DateTime,
@ApplyDate DateTime,
@SomeString varchar(6) OUTPUT
AS
BEGIN
SELECT *
into #temp
FROM MyTable
WHERE DateFrom <= MyDate
AND DateTo >= MyDate
IF @@ROWCOUNT = 1
SELECT * FROM #temp
ELSE
SELECT < other result set>
END
答案 1 :(得分:1)
你需要这样做:
declare @count int
select @count=count(*) from -- your current query
然后
if (@count>1) then
-- your current SELECT
else
-- your alternative query
end
这假设您正在使用SQL Server。请在您的问题中添加相应的标记。