Я создал таблицу в PostgreSQL, которая содержит столбец XML. Я использую тип данных text
для этого столбца. Теперь у меня есть один пример XML, который хранится в одном поле следующим образом в таблице:Как сравнить XML для равенства в PostgreSQL
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Теперь я создал одну процедуру, которая сравнивает 2 XML-данных. Если данные XML будет найден, он возвращает истину еще ложь
Проблема, если данные 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 текст, из P_ID целое) AS $ BODY $ DECLARE V_ID INTEGER; НАЧАТЬ SELECT, идентификатор НА v_id ОТ работника ГДЕ XML_DATA = p_xml_data_in и ИМЯ = 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; – Nik
обновите вопрос и формат этой вещи ... –