添加参数,如果执行存储过程后没有返回记录,则显示消息
Posted
技术标签:
【中文标题】添加参数,如果执行存储过程后没有返回记录,则显示消息【英文标题】:Add a parameter to display a message if no records returned after executing a stored procedure 【发布时间】:2022-01-06 01:41:39 【问题描述】:我正在传递一些参数并获取请求参数的相应结果。假设我想添加一个参数以在执行存储过程后没有返回记录时显示消息 - 我该怎么做?
【问题讨论】:
请向我们展示您到目前为止所做的事情以及您考虑和尝试过的事情。 在select
语句之后检查@@ROWCOUNT
的值以检查是否返回记录,根据该值和您的新输入参数,您可以raise
一条消息[不能显示存储过程中的图像]
我认为返回某种“未找到记录”消息应该是应用程序/表示层的工作,而不是存储过程。当应用程序/表示层可以简单地检测到“rowcount = 0”并做正确的事情时,尝试沿着print
、raiserror
或throw
路径从存储过程中执行此类操作只会不必要地复杂化。
【参考方案1】:
当没有找到记录时,您可以使用 CASE 语句输出消息。
以下是返回每个城市的员工人数的示例。
每个城市包含员工详细信息的表格数据:
提供每个城市的员工数量并在未找到记录时显示消息的存储过程。
CREATE PROCEDURE CheckEmployee_byCity
@City varchar(100)
AS
BEGIN
SET NOCOUNT ON;
Declare @ReturnValue Varchar(100);
SELECT @ReturnValue = case when Count(*)>0 then convert(varchar,count(*)) when count(*)= 0 then 'No Employees found' end
FROM [dbo].[Employees] WHERE City = @City
select @ReturnValue as 'Return value'
END
结果:
EXEC CheckEmployee_byCity @city = 'London';
EXEC CheckEmployee_byCity @city = 'California';
【讨论】:
以上是关于添加参数,如果执行存储过程后没有返回记录,则显示消息的主要内容,如果未能解决你的问题,请参考以下文章
带有表类型参数的存储过程返回数据但 SqlDataAdapter 不会填充