Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server TSQL将XML类型设置为NULL(如果变量为空)_Sql Server_Tsql_Stored Procedures - Fatal编程技术网

Sql server TSQL将XML类型设置为NULL(如果变量为空)

Sql server TSQL将XML类型设置为NULL(如果变量为空),sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,我有一个存储过程,它依赖于IF@awardEmployees不为NULL的语句 我在顶部定义了变量: @awardEmployees XML = NULL 在陈述之前,我试图设定: SET @awardEmployees = NULLIF(@awardEmployees, '') 将返回错误: 在equal to运算符中,数据类型xml和varchar不兼容 我的代码根据搜索字段中是否输入了任何内容发送XML字符串或空字符串,因此,如果该字段为空,我将尝试将其设置为NULL 还有其他方法可以

我有一个存储过程,它依赖于
IF@awardEmployees不为NULL的
语句

我在顶部定义了变量:

@awardEmployees XML = NULL
在陈述之前,我试图设定:

SET @awardEmployees = NULLIF(@awardEmployees, '')
将返回错误:

在equal to运算符中,数据类型xml和varchar不兼容

我的代码根据搜索字段中是否输入了任何内容发送XML字符串或空字符串,因此,如果该字段为空,我将尝试将其设置为NULL

还有其他方法可以做到这一点吗

使用exist exist()方法-如果返回空结果,它将返回0,表示False:

declare @awardEmployees XML = '<employees><employee><empID>1234</empID></employee></employees>'

IF @awardEmployees.exist('/employees/employee') > 0
BEGIN
    print '@awardEmployees IS NOT NULL'
END
ELSE
BEGIN
    print '@awardEmployees IS NULL'
END 


declare @awardEmployees2 XML = ''

IF @awardEmployees2.exist('/employees/employee') > 0 
BEGIN
    print '@awardEmployees2 IS NOT NULL'
END
ELSE
BEGIN
    print '@awardEmployees2 IS NULL'
END 
declare@awardEmployees XML='1234'
如果@awardEmployees.exist('/employees/employees')>0
开始
打印“@awardEmployees不为空”
结束
其他的
开始
打印“@awardEmployees为空”
结束
声明@awardEmployees2 XML=''
如果@awardEmployees2.exist('/employees/employees')>0
开始
打印“@awardEmployees2不为空”
结束
其他的
开始
打印“@awardEmployees2为空”
结束

请参阅。

这有用吗?设置@awardEmployees=NULLIF(将@awardEmployees转换为varchar(max)),“”),这似乎很有效!谢谢:)我的XML是
1234
。所以:
如果@awardEmployees.exist(“/employees/employees”)不是空的
?@SBB是的,这是我的理解。但是您的XML中有一个输入错误。应该是这样的,毕竟这可能不起作用-
@awardEmployees
将永远不会为空,因为它将作为空字符串传递给SPI,并且SPI已将其更改为检查返回值是否大于0。如果返回空结果,exist()将返回0,表示False。