接受NULLS到存储过程

时间:2017-11-28 13:11:18

标签: sql sql-server tsql

我有以下存储过程非常简单,但它允许传入NULL值。

我只是想知道这里有什么最佳做法,以及如何在这种情况下处理NULL?

ALTER PROCEDURE [dbo].[spGetClient]
    @ClientID int
AS
BEGIN
    SET NOCOUNT ON;

    SELECT
        ......
    FROM
        Client
    WHERE
        ClientID = @ClientID

2 个答案:

答案 0 :(得分:3)

您可以提出自定义错误:

<packages>
    <package id="AutoMapper" version="4.2.1" targetFramework="net45" />
    <package id="EntityFramework" version="6.1.3" targetFramework="net45" />
    <package id="log4net" version="2.0.8" targetFramework="net45" />
    <package id="Newtonsoft.Json" version="6.0.1" targetFramework="net45" />
    <package id="Npgsql" version="2.2.7" targetFramework="net45" />
    <package id="Npgsql.EntityFramework" version="2.2.7" targetFramework="net45" />
</packages>

答案 1 :(得分:0)

最简单的方法是将参数声明为NOT NULL

ALTER PROCEDURE [dbo].[spGetClient] (
    @ClientID int NOT NULL
)
. . . 

但是,并非所有存储过程都允许这样做。

您的存储过程没问题。如果传入NULL值,则不返回任何行。这似乎是合理的,因为ClientId表中NULL可能永远不会Client,所以我没有看到问题。