如何创建一个返回布尔列表的sp?

时间:2012-09-06 06:46:00

标签: sql list stored-procedures

我想构建一个存储过程,它可以返回值0或1,具体取决于今天是否在日期列表中。我做了这样的事(感谢我的堆栈溢出员):

USE [AP_db]
GO
/****** Object:  StoredProcedure [dbo].[usp_pull_holydays]    Script Date: 09/05/2012   14:21:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER  PROCEDURE [dbo].[usp_Is_Holyday]
    @Value varchar(50),
    @Result bit OUTPUT
AS
Begin
    If exists (select 1
                 from Holyday_Date
                where ISOCNTRYDESC = @Value
                  and dateadd(day, 0, datediff(day, 0, Holiday)) = dateadd(day, 0, datediff(day, 0, getdate())) )
        set @Result = 1
    Else
        set @Result = 0
        Select @Result
    End

它适用于一个值,我的问题是用500个值来做。所以我的问题是如何发送值列表并返回0和1的列表?

1 个答案:

答案 0 :(得分:0)

您可以通过不使用示例中的output变量来返回存储过程中的任何选择结果,而是返回结果集,如下所示:

create procedure testProcedure
as
    select * from Holyday
go

不知道如何运行SP,但这将返回结果集,就像任何其他查询一样;假设SP内部的选择结果与下面定义的#test表完全相同,您可以例如将上述SP的结果插入临时表:

create table #test(
  [id] int,
  name varchar(64)
)

insert into #test
    exec testProcedure