我有一个依赖于IF @awardEmployees IS NOT NULL
语句的存储过程。
我在顶部定义了变量:
@awardEmployees XML = NULL
然后在声明之前我试图设置它:
SET @awardEmployees = NULLIF(@awardEmployees, '')
返回错误:
数据类型xml和varchar在等于运算符中不兼容。
我的代码根据在搜索字段中输入的内容发送XML字符串或空字符串,因此我尝试将其设置为NULL(如果它为空)。
还有其他方法吗?
答案 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。