我正在尝试使此代码片段正常工作。
面向 SQL 2005 SP2 和更新的 SQL Server 产品。
代码:
BEGIN
DECLARE @level tinyint;
DECLARE @levelvar tinyint;
IF substring(@@VERSION, 23, 4) != '2000'
BEGIN
select @level = [compatibility_level] from sys.databases where name = DB_name();
SET @levelvar = @level;
EXEC sp_dbcmptlevel ":DATABASE_NAME" @level;
END;
是的,这@levelvar
不是必需的,是的,我也DB_name()
可以在 中使用sp_dbcmptlevel
,是的,我可以使用ALTER TABLE
,是的,IF
在 SQL 2012 中返回错误值,但痛苦的是它根本无法在 SQL Studio 中执行。错误信息是:
Msg 102, Level 15, State 1, Line 9
Incorrect syntax near '@level'.
如何获取局部变量@level
/@levelvar
传递给这个存储过程?