2012-04-22 16 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にデフォルト値を設定する選択が今、それはまだ1

編集戻る前

Set @PaymentModeId = 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を私のコーディングで編集してください。私はあなたが私にset @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を正しく使うために私の答えを更新しました。 –