zoukankan      html  css  js  c++  java
  • 存储过程返回布尔值以及C#相关处理

    前段时间有在数据库以及程序之间使用到布尔(bool,Boolean)值的问题。

    比如在SQL中,你想判断记录是否存? 通常你会这样写:

    DECLARE @IsExists BIT = 0
    
    IF EXISTS(SELECT TOP 1 1  FROM [dbo].[SixSResponsiblePerson] WHERE [SixS_nbr] = @SixS_nbr AND [UsersId] = @UsersId)
        SET @IsExists = 1
    
    SELECT @IsExists
    View Code


    或者你可以按照Insus.NET的习惯写法:

    SELECT CASE WHEN EXISTS(SELECT TOP 1 1 FROM [dbo].[SixSResponsiblePerson] WHERE 
    [SixS_nbr] = @SixS_nbr AND [UsersId] = @UsersId )
    THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END
    View Code

     
    在数据库返回值来看,存储过程只返回数据类型bit了,“1” 和“0”。现在我们在C#程序中应用这个存储过程:

    其实,在C#中,数据转换为bool值时,只有"0"转换为false,其它值转换为true。

     上面的情况一般均没有什么问题,

    再看看,数据库的设计:

    这个字段可以允许为空,也就意味着有三个值存储,true,false,null

    此时我们在写存储过程时,就需要注意了。我们只需判断NULL空或0值为false的就行了,其它判断为真。

    Ok,上面的存储过程,还适合另外一种情形,如使用tinyint。

  • 相关阅读:
    2019nc#7
    ABC133F
    2019DX#6
    2019DX#5
    2019dx#4
    解决一般图最大匹配——带花树算法
    2019nc#4
    B-generator 1_2019牛客暑期多校训练营(第五场)
    hdu-6638 Snowy Smile
    hdu-6621 K-th Closest Distance
  • 原文地址:https://www.cnblogs.com/insus/p/4802763.html
Copyright © 2011-2022 走看看