【发布时间】:2020-11-11 12:30:34
【问题描述】:
我正在尝试创建一个函数,该函数将在表中查询时间,然后根据站点返回正确的时间。
查询表中的时间有分店的开、关时间。我不确定我应该使用 CASE 还是 IF。
当我使用CASE 时,我收到此错误:
消息 444,级别 16,状态 2,过程工作时间,第 33 行
函数中包含的 Select 语句无法将数据返回给客户端。
当我打印到屏幕上时它工作正常。
/为网站的打开和关闭时间添加了这个/
DECLARE @WorkStart TIME
SET @WorkStart = '09:00'
SELECT
CASE
WHEN [Location Code] = 'OF' THEN [OpenTime]
WHEN [Location Code] = 'MP' THEN [OpenTime]
WHEN [Location Code] = 'GP' THEN [OpenTime]
WHEN [Location Code] = 'EC' THEN [OpenTime]
WHEN [Location Code] = 'WP' THEN [OpenTime]
WHEN [Location Code] = 'ZN' THEN [OpenTime]
END
FROM
[dbo].[OperationHours]
--PRINT @WorkStart
--GO
【问题讨论】:
-
您的错误与 CASE 无关。它与您的函数声明以及它如何尝试收集和返回适当的值有关。发布完整的函数声明,有人可以给你指导。现在是阅读文档并了解如何以及何时使用用户定义函数的好时机。
-
谢谢,但我不想解析位置代码。我希望它查询 operationhours 表。我正在尝试使用以下脚本 stackoverflow.com/questions/5274208/... 我只想解析开始和结束日期时间。因此我认为使用案例对我有用。每个站点在表操作时间中的不同时间打开和关闭。现在开始时间和结束时间在 9 点到 5 点是“静态的”。我希望它基于每个站点。我希望我能说得通
标签: sql sql-server