我有以下存储过程非常简单,但它允许传入NULL值。
我只是想知道这里有什么最佳做法,以及如何在这种情况下处理NULL?
ALTER PROCEDURE [dbo].[spGetClient]
@ClientID int
AS
BEGIN
SET NOCOUNT ON;
SELECT
......
FROM
Client
WHERE
ClientID = @ClientID
答案 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
,所以我没有看到问题。