我现在也试过了
如果存在表,我尝试检查我的数据错误,并从我的语句中获取 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');