使用OPENXML WITH(schema)读取xml时出现奇怪的行为

时间:2017-02-14 14:39:48

标签: sql sql-server

请看下面的SQL。谁能解释这种奇怪的行为?感谢任何提示,我不知道为什么它的工作方式不同。我想使用域(用户定义)类型,但它无法正常工作,你可以看到 - 十进制数是四舍五入的。

CREATE TYPE [dbo].[QTY] FROM decimal(18, 3) NULL
GO

DECLARE @XMLDATA xml=N'<Table><Row Value="42.5" /></Table>';
DECLARE @HDOC INT;

EXEC sp_xml_preparedocument @HDOC OUTPUT, @XMLDATA;

-- this returns 43
SELECT * FROM OPENXML(@HDOC, 'Table/Row') WITH (
    Value QTY
);

-- this returns 42.500
SELECT * FROM OPENXML(@HDOC, 'Table/Row') WITH (
    Value DECIMAL(18,3)
);

EXEC sp_xml_removedocument @HDOC;
GO

0 个答案:

没有答案