如果我的表中有记录,我想返回它,如果该表没有记录,则返回“america/chicago”。
错误:msg 102,级别15,状态1,过程ufn\u getgcmoodletimezone,第18行[batch start line 7]靠近“@moodletimezone”的语法不正确。msg 102,级别15,状态1,过程ufn\u getgcmoodletimezone,第22行[batch start line 7]靠近“end”的语法不正确。
ALTER FUNCTION [dbo].[ufn_GetGCMoodleTimeZone]
( @HSATimeZone VARCHAR(250) )RETURNS varchar(250)
AS
BEGIN
DECLARE @MoodleTimeZone varchar(250)
SELECT @MoodleTimeZone = GCMoodleTimeZoneMap.MoodleTimeZone
FROM GCMoodleTimeZoneMap
WHERE GCMoodleTimeZoneMap.HSATimeZone = @HSATimeZone
IF @MoodleTimeZone='NULL'
BEGIN
@MoodleTimeZone='America/Chicago'
END
RETURN @MoodleTimeZone
END
1条答案
按热度按时间xghobddn1#
关于使用set和如何检查null的注解是正确的,因此我将不再重复。不过,您想要的内容可以写得更短,效率更高,如下所示:
说明:
内在的
SELECT
将返回单行或无行。这个
ISNULL()
将处理该结果,在“无行”情况下,它将替换默认值'America/Chicago'
.这是一把正在工作的小提琴:
https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=f4c9e946475818e538ed8f63160d6971