SQL存储过程用

时间:2015-01-27 15:10:46

标签: sql

我想编写一个看起来像

的存储过程
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以获得单个结果。

2 个答案:

答案 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。请在您的问题中添加相应的标记。