2012-09-06 4 views
0

오늘 날짜가 날짜 목록에 있는지에 따라 값 0 또는 1을 반환 할 수있는 저장 프로 시저를 작성하고 싶습니다. 나는 (스택 오버 플로우 동료 덕분에) 다음과 같이했다.부울 목록을 반환하는 sp를 만드는 방법은 무엇입니까?

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

이 MS SQL입니까? – hgulyan

+0

IMO 절차가 아닌 테이블 값 함수를 통해서만 테이블을 반환 할 수 있습니다. – rabudde

+0

실행할 쿼리 (즉, 반환해야하는 데이터)는 무엇입니까? 두 개 이상의 결과를 반환하는 현재 쿼리에 대한 명백한 확장이 표시되지 않습니다 ... – codeling

답변

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 
관련 문제