存储过程返回nullable int

时间:2014-03-25 10:35:56

标签: entity-framework sql-server-2008 stored-procedures

在我的程序中,我返回一个int值。

ALTER PROCEDURE [dbo].[GetValue] 
    -- Add the parameters for the stored procedure here
    @ID int,

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    DECLARE @isNew int
    SET @isNew=0
    DECLARE @returnedValue int
    DECLARE @output int
    SET @returnedValue=[dbo].fn_GetIsNewLecturer(@ID)


    IF(@returnedValue=0)        
        BEGIN
             PRINT 'new'
             EXEC @output=[dbo].[GetNew] @ID
             SELECT @output 
        END
    ELSE
        BEGIN
            PRINT 'old'
            EXEC @output=[dbo].[sp_GetOld] @ID
            SELECT @output  
        END
        RETURN @output
END

它的返回值应为int。但它返回Nullable int?。如何将其更改为int enter image description here

1 个答案:

答案 0 :(得分:1)

试试这个:

select [Output] = isnull(@output, 0)

以下是它应该起作用的原因:

declare @i int

select ni = @i, nni = isnull(@i,0)
into #t

select is_nullable, * 
from tempdb.sys.columns 
where [object_id] = object_id(N'tempdb..#t')

drop table #t