如果为空变量,则TSQL将XML类型设置为NULL

时间:2014-08-26 16:12:39

标签: sql-server tsql stored-procedures

我有一个依赖于IF @awardEmployees IS NOT NULL语句的存储过程。

我在顶部定义了变量:

@awardEmployees XML = NULL

然后在声明之前我试图设置它:

SET @awardEmployees = NULLIF(@awardEmployees, '')

返回错误:

  

数据类型xml和varchar在等于运算符中不兼容。

我的代码根据在搜索字段中输入的内容发送XML字符串或空字符串,因此我尝试将其设置为NULL(如果它为空)。

还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

使用exists 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 

请参阅here