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

それは1つの値でうまく機能しますが、私の問題は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 に答える