OPENXML根据给定的WITH数据类型切断输入

时间:2017-08-30 08:40:25

标签: sql-server tsql sql-server-2016

我有以下TSQL脚本:

declare @ValuesXML nvarchar(max), @handle int

set @ValuesXML = '<?xml version="1.0" encoding="utf-16"?>
                  <Values>
                      <Value code="TUIRWERTYU"/>
                  </Values>
                  '

exec dbo.sp_xml_preparedocument @handle output, @ValuesXML

create table #test(val nvarchar(1))

insert into #test (val)
select code
  from openxml( @handle, '/Values/Value', 1) 
  with (code nvarchar(1))

select * from #test

drop table #test

当我运行它时,我期待有类似于

的错误
  

字符串或二进制数据将被截断。

由于code="TUIRWERTYU"有10个字符,但我已宣布&#39;在以下语句with (code nvarchar(1))

中只能读取该字段的一个字符

然而,脚本运行时没有任何错误。 select语句的输出是

  

Ť

这意味着我的值被截断以适合列声明。

为什么会这样?我找不到任何解释它的文档。

0 个答案:

没有答案