小编tho*_*ett的帖子

是否可以根据 SQL Server 版本选择 RAISERROR 或 THROW?

这是我现在的代码:

BEGIN TRY
INSERT INTO TABLE (F1,F2,F3) 
VALUES ('1','2','3')
END TRY
BEGIN CATCH
;THROW
END CATCH
Run Code Online (Sandbox Code Playgroud)

效果很好,除非它在装有 SQL 2008 的机器上运行。我想让 CATCH 块检查 SQL 版本并运行 THROW(如果它等于或高于 2012 年),如果是 2008 年则运行 RAISERROR。我一直遇到语法错误,我想知道是否有可能。即使像这样简单的事情也不适合我。

BEGIN CATCH
IF ((SELECT SERVERPROPERTY('productversion')) >= 11) ;THROW
END CATCH
Run Code Online (Sandbox Code Playgroud)

任何建议表示赞赏。

sql-server-2008 sql-server sql-server-2008-r2 sql-server-2012 sql-server-2014

11
推荐指数
1
解决办法
925
查看次数