MSSQL 打印一条 XML 消息



如果存在表,我尝试检查我的数据错误,并从我的语句中获取 XML 的打印输出

为此,我尝试了以下代码:

IF (
EXISTS (
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'TABLE_NAME_I'
)
) BEGIN
PRINT 'Table allready exists in database'
FOR XML AUTO
END;

但我唯一知道的是:

Database operation failed: Incorrect syntax near the FOR keyword.

我也试图将FOR XML AUTO放在PRINT 'Table allready exists in database'面前,但雷索是一样的。

我正在使用 JDBC 连接器来实现连接和输出。

我的项目是否可行,或者我是否必须将其与其他东西结合起来才能实现这一目标?

提前感谢您的帮助。

更新


我现在也试过了
SET @string = '<MESSAGE>Table allready exists in database</MESSAGE>';
SET @xml = CONVERT(XML, @string);
SELECT @xml;

这是我得到的输出:

<Data>
<object_II>
<_1/>
</object_II>
<Data>

预期产出:

<Data>
<object_II>
<MESSAGE>Table allready exists in database</MESSAGE>
</object_II>
<Data>

您可以尝试 XQuery 和 FLWOR 表达式来组合所需的 XML。

.SQL

DECLARE @message VARCHAR(100) = 'Table allready exists in database';
SELECT CAST(N'' AS XML).query('
<Data>
<object_II>
<MESSAGE>{sql:variable("@message")}</MESSAGE>
</object_II>
</Data>
');

或完全动态的 XML 组合:

SELECT CAST(N'' AS XML).query('
element  Data {
element  object_II {
element  MESSAGE {
text {sql:variable("@message")}
}
}
}
');

您将需要 SELECT,而不是 PRINT:

SELECT 'Table already exists' as Message
FOR XML PATH('object_II'), ROOT ('Data');

相关内容

  • 没有找到相关文章

最新更新