繁体   English   中英

在存储过程中接受NULL

[英]Accepting NULLS into Stored Procedures

下面的存储过程非常简单,但是它允许传入NULL值。

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

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

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

您可以引发自定义错误:

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

    if @ClientID is null 
    BEGIN
          raiserror('The value for ClientID should not be null', 15, 1)
          return;
    END
    SELECT
        ......
    FROM
        Client
    WHERE
        ClientID = @ClientID
END

最简单的事情就是将参数声明为NOT NULL

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

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

您的存储过程很好。 如果传入NULL值,则将不返回任何行。 这似乎是合理的,因为ClientIdClient表中可能永远不会为NULL ,因此我看不到任何问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM