【发布时间】:2016-12-29 05:15:48
【问题描述】:
我在 PostgreSQL 中创建了一个包含 XML 列的表。我正在为该列使用text 数据类型。现在我有一个示例 XML,它存储在表中的一个字段中,如下所示:
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
现在我创建了一个比较 2 个 XML 数据的程序。如果找到 XML 数据,则返回 true,否则返回 false
问题是如果XML数据存储在表格中的一行中
<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>
然后它给出所需的输出,但如果它存储在不同的行中,则返回null。
我的过程如下所示
CREATE OR REPLACE FUNCTION comparexml(p_name_in VARCHAR(255), p_xml_data_in text, out p_id integer)AS $BODY$
DECLARE
V_ID INTEGER;
BEGIN
SELECT id INTO v_id
FROM employee
WHERE XML_DATA = p_xml_data_in and
NAME=p_name_in;
IF(v_id IS NULL) THEN
V_ID := 0;
ELSE
V_ID := 1;
END IF;
p_id=v_id;
END;
$BODY$ LANGUAGE plpgsql;
【问题讨论】:
-
显示您的查询不知道您想要什么。
-
@EvanCarroll - 我的函数如下所示 CREATE OR REPLACE FUNCTION comparexml(p_name_in VARCHAR(255), p_xml_data_in text, out p_id integer)AS $BODY$ DECLARE V_ID INTEGER; BEGIN SELECT id INTO v_id FROM employee WHERE XML_DATA = p_xml_data_in 和 NAME=p_name_in;如果(v_id 为空)然后 V_ID := 0;否则 V_ID := 1;万一; p_id=v_id;结尾; $BODY$ 语言 plpgsql;
-
更新问题并格式化那个东西...
-
@EvanCarroll - 完成!
-
你的函数没有返回任何东西。你说你比较两个xml,但你在代码中只有检查它是否为空
标签: xml postgresql comparison