SQL 2017/19:COMPATIBILITY_LEVEL +设置FMTONLY ON [英] SQL 2017/19: COMPATIBILITY_LEVEL + SET FMTONLY ON

查看:111
本文介绍了SQL 2017/19:COMPATIBILITY_LEVEL +设置FMTONLY ON的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

USE master

GO



CREATE DATABASE测试

GO¥ b $ b

USE测试

GO



创建功能dbo.fnTest()

RETURNS @T表(id INT)

AS 

BEGIN

INSERT INTO @T

SELECT 1 

退货

结束



GO



ALTER DATABASE测试

SET COMPATIBILITY_LEVEL = 140

GO



SET FMTONLY ON;

SELECT * FROM dbo.fnTest()

SET FMTONLY OFF;



GO

< br $>
USE master

GO



DROP DATABASE测试

GO



此脚本适用于  COMPATIBILITY_LEVEL = 130但无法使用  COMPATIBILITY_LEVEL = 140和150


我的意思是它仅在  COMPATIBIL时返回结果ITY_LEVEL = 130


这是一个错误吗? 


解决方案

您好Siarhei.Kruk,


  SET FMTONLY


请看一下:


SET FMTONLY(Transact-SQL)


USE master
GO

CREATE DATABASE test
GO

USE test
GO

CREATE FUNCTION dbo.fnTest()
RETURNS @T table (id INT)
AS 
BEGIN
INSERT INTO @T
SELECT 1 
RETURN
END

GO

ALTER DATABASE test
SET COMPATIBILITY_LEVEL = 140
GO

SET FMTONLY ON;
SELECT * FROM dbo.fnTest()
SET FMTONLY OFF;

GO

USE master
GO

DROP DATABASE test
GO

This script works with COMPATIBILITY_LEVEL = 130 but doesn't work work with COMPATIBILITY_LEVEL = 140 and 150

I mean it returns result only if COMPATIBILITY_LEVEL = 130

Is it a bug? 

解决方案

Hi Siarhei.Kruk,

The SET FMTONLY was deprecated.

Please take a look here:

SET FMTONLY (Transact-SQL)


这篇关于SQL 2017/19:COMPATIBILITY_LEVEL +设置FMTONLY ON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆