我想构建一个存储过程,它可以返回值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的列表?
答案 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