2012-04-22 6 views
1

임 내 응용 프로그램 중 하나에서 다음 절차를 사용하여 null 값에 대한 뭔가를 설정하는 방법매개 변수

ALTER procedure [dbo].[FeeRecordSelect] 
@GRNo varchar(4), 
@PaymentModeId numeric(2) output 
as 
begin 
SELECT @PaymentModeId = Students.PaymentModeId FROM Students where Students.GRNo = @GRNo 
end 
GO 

내 질문은 : 나는 @GRNo

에 대한 결과를 얻을 수없는 경우 @PaymentModeId 1을 선택합니다

나는 이미 선택에 의해 반환 된 적어도 하나 개의 행이있는 경우이

create procedure [dbo].[FeeRecordSelect10] 
@GRNo varchar(4), 
@PaymentModeId numeric(2) output 
as 
begin 
SELECT @PaymentModeId = isnull(Students.PaymentModeId, 1) FROM Students where Students.GRNo = @GRNo 
end 
GO 
+1

어떤 RDBMS를 사용하고 있습니까? 적절한 것으로 다시 태그하십시오. –

+0

[이 SO 문서] (http://stackoverflow.com/questions/4823880/sql-server-select-into-variable)을보고 싶을 수도 있고 null에 대한 삽입 후 @paymentModeID 값을 확인하는 것이 좋습니다. 1로 설정합니다. – xQbert

답변

1

@PaymentModeId 만 설정됩니다 노력했다.

은 여전히 ​​돌아갑니다 선택된 행이 존재하지 않는 경우는 이제 1. 기본 값을 설정 선택하기 전에

Set @PaymentModeId = 1 

을 넣어 1

편집 :

ALTER procedure [dbo].[FeeRecordSelect] 
@GRNo varchar(4), 
@PaymentModeId numeric(2) output 
as 
begin 

Set @PaymentModeId = 1  

SELECT @PaymentModeId = Students.PaymentModeId FROM Students where Students.GRNo = @GRNo 
end 
GO 
+0

무스 어디에서 설정해야합니까 @PaymentModeId = 1 ???? –

+0

제 코드를 사용하여 답변을 편집하십시오 !!!! –

+0

내 코딩에서 asnwer를 편집 해 주시기 바랍니다. 그래서 정확히 어디에서 설정해야 하는지를 이해할 수 있습니다. @PaymentModeId = 1 –

2

IsNull()이 작동하지 않는 이유는 결과 집합에 행이 포함되어 있지 않기 때문입니다.

ALTER procedure [dbo].[FeeRecordSelect] 
@GRNo varchar(4), 
@PaymentModeId numeric(2) output 
as 
begin 
set @PaymentModeId = isnull((select Students.PaymentModeId FROM Students where Students.GRNo = @GRNo), 1) 
end 
GO 
+0

그것을 할 또 다른 방법. +1 – Moose

+0

죄송합니다. 코드가 작동하지 않습니다. 그러나 Moos가 내게 제안한 것은 무엇입니까 –

+0

출력 매개 변수가 기본값을 가질 수 없다고 생각합니다 ...이 상황에서 IsNull을 올바르게 사용하도록 내 대답을 업데이트했습니다. –

관련 문제