SQL Server是否支持合并为空时抛出错误的语法?
SQL Server是否支持类似C#合并表达式的抛异常语法?
在C#等编程语言中,可以使用合并表达式在值为null时直接抛出异常,示例代码如下:
string someValue = MyFunctionThatMightReturnNull() ?? throw new Exception("null value");
我想知道SQL Server中是否存在类似的语法。我尝试了下面的示意性代码,但它是无效的:
INSERT INTO "MyTable" ("MyColumn") VALUES (COALESCE(MyFunction(), THROW 50005, N'An error occurred', 1));
我已经了解两种替代方案,但都无法满足我的需求:
- 将目标列设置为NOT NULL,但我的业务场景要求该列必须允许NULL值;
- 使用块语句处理单个值的情况,代码如下:
DECLARE @myVar VARCHAR(MAX); SELECT @myVar = MyFunction(); IF (@myVar IS NULL) BEGIN THROW 50005, N'An error occurred', 1; END INSERT INTO "MyTable" ("MyColumn") VALUES (@myVar);
但这种方法有局限性,无法应用于INSERT...SELECT场景,比如我需要实现下面的逻辑时就无法用这种方式:
INSERT INTO "MyTable" ("MyColumn") SELECT COALESCE("MyOtherTableColumn", THROW 50005, N'An error occurred', 1) FROM "MyOtherTable";
请问SQL Server中是否存在能实现该需求的语法?
内容的提问来源于stack exchange,提问作者Mr Anderson
相关产品推荐
相关产品推荐

