MSSQL 为 XML 打印一条消息

MSSQL print a message for XML

如果 table 存在,我会尝试检查我的数据错误,并从我的语句中获取打印输出 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.

我也试过在PRINT 'Table allready exists in database'前面设置FOR XML AUTO,结果还是一样

我正在使用 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,而不是印刷品:

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