2011-12-26 1 views
3

dbtypeの10進数にはどのようにNULL値を渡しますか?私は、ストアドプロシージャにパラメータを渡すのです

param = CreateInParameter("Result", DbType.Decimal); 
param.Value = testresults.Result; 
cmd.Parameters.Add(param); 

時々testresults.Resultは、私はNULLとしてそれを渡すにはどうすればよい

nullになりますか?

ここに私のストアドプロシージャです:値が割り当てられていませんでした

USE [SalesDWH] 
GO 
/****** Object: StoredProcedure [dbo].[Insert_TestResults] Script Date: 12/25/2011 23:49:19 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 
-- Author:  <Author,,Name> 
-- Create date: <Create Date,,> 
-- Description: <Description,,> 
-- ============================================= 
ALTER PROCEDURE [dbo].[Insert_TestResults] 
    -- Add the parameters for the stored procedure here 

    @TestName varchar (500), 
    @Result decimal (18,4)=null, 
    @NonNumericResult varchar (50)=null, 
    @QuickLabDumpid int 

AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

INSERT INTO [SalesDWH].[dbo].[TestResults] 
      ([TestName] 
      ,[Result] 
      ,nonnumericresult 
      ,[QuickLabDumpid]) 
    VALUES 
      (@TestName,@Result,@nonnumericresult,@QuickLabDumpID) 


END 

testresults.Result場合は、それだけで私はそれがNULLとしてデータベースに移動することを可能にするにはどうすればよい0として行くには?

答えて

6

これを試してみてください:

param.Value = testresults.Result==0?DBNull.Value:(object)testresults.Result; 
3

使用param.Value = DBNull.Value; NULLにデータベースに値を設定します。

0

@Resultパラメータをデフォルト値nullで定義したので、このパラメータを渡すだけではnullになります。 if(testresults.Result>0) {param = CreateInParameter("Result", DbType.Decimal); param.Value = testresults.Result; cmd.Parameters.Add(param); }

0

は(あなたがやったように)ストアドプロシージャは、その後、ヌルにパラメータをデフォルトの有無:

cmd.Parameters.AddWithValue("@Result", testresults.Result); 

Resultnullである場合には、パラメータが省略され、デフォルト値が使用されています。

関連する問題