0

我想构建一个存储过程,它可以根据今天的日期是否在日期列表中返回值 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 的列表?

4

1 回答 1

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
于 2012-09-06T06:58:58.363 回答