如何在 postgresql 函数中从 xml 读取数据?
How to read data from xml in postgresql function?
如何读取postgresql中存储的xml数据procedure.and如何通过xml发送数据并调用java中的存储过程。
我可以通过 sqlserver 读取 xml 数据,但我在 postgres 存储过程中使用同样的东西,比如
insert into temp_StudentDetails (studentId, studentFirstName, studentMiddleName, studentLastName, dateOfBirth, emailId, mobileNumber, landlineNumber, courseId, yearId, cityIdPass, stateIdPass, addressId)
SELECT
Tab.Col.value('(studentId)[1]', 'bigint' ),
Tab.Col.value('(studentFirstName)[1]', 'character varying(50)'),
Tab.Col.value('(studentMiddleName)[1]', 'character varying(50)'),
Tab.Col.value('(studentLastName)[1]', 'character varying(50)'),
Tab.Col.value('(dateOfBirth)[1]', 'date'),
Tab.Col.value('(emailId)[1]', 'character varying(50)'),
Tab.Col.value('(mobileNumber)[1]', 'character varying(50)'),
Tab.Col.value('(landlineNumber)[1]', 'character varying(50)'),
Tab.Col.value('(courseId)[1]', 'BIGINT'),
Tab.Col.value('(yearId)[1]', 'BIGINT'),
Tab.Col.value('(cityIdPass)[1]', 'BIGINT'),
Tab.Col.value('(stateIdPass)[1]', 'BIGINT'),
Tab.Col.value('(addressId)[1]', 'BIGINT')
from p_studentDetailsXML.nodes('/Root/StudentDetails') Tab(Col);
以及如何使其在 postgresql 函数中工作?
有什么帮助吗?
Postgres 为写入和读取 xml 数据提供了良好的支持。有关详细信息,请参阅文档:
www.postgresql.org/docs/current/static/functions-xml.html
扩展 xml2 提供额外的 xml 功能:
http://www.postgresql.org/docs/current/static/xml2.html。
使用
创建扩展
CREATE EXTENSION xml2;
如a_horse_with_no_name所说,您可能需要 xpath 或 xpath_table 函数。这里有一个简单的存储过程示例,基于您使用 xpath 函数的数据:
CREATE OR REPLACE FUNCTION insert_student(input_xml xml) RETURNS VOID AS
$$
DECLARE root_xpath TEXT = '/Root/StudentDetails/';
BEGIN
INSERT INTO temp_StudentDetails (studentId, studentFirstName)
SELECT ((xpath(root_xpath|| 'StudentId/text()', input_xml))[1])::text::int,
(xpath(root_xpath|| 'studentFirstName/text()', input_xml))[1];
RETURN;
END;
$$
LANGUAGE plpgsql;
所以你可以调用函数:
SELECT insert_student('
<Root><StudentDetails>
<StudentId>10</StudentId>
<studentFirstName>John</studentFirstName>
</StudentDetails></Root>');
如何读取postgresql中存储的xml数据procedure.and如何通过xml发送数据并调用java中的存储过程。
我可以通过 sqlserver 读取 xml 数据,但我在 postgres 存储过程中使用同样的东西,比如
insert into temp_StudentDetails (studentId, studentFirstName, studentMiddleName, studentLastName, dateOfBirth, emailId, mobileNumber, landlineNumber, courseId, yearId, cityIdPass, stateIdPass, addressId)
SELECT
Tab.Col.value('(studentId)[1]', 'bigint' ),
Tab.Col.value('(studentFirstName)[1]', 'character varying(50)'),
Tab.Col.value('(studentMiddleName)[1]', 'character varying(50)'),
Tab.Col.value('(studentLastName)[1]', 'character varying(50)'),
Tab.Col.value('(dateOfBirth)[1]', 'date'),
Tab.Col.value('(emailId)[1]', 'character varying(50)'),
Tab.Col.value('(mobileNumber)[1]', 'character varying(50)'),
Tab.Col.value('(landlineNumber)[1]', 'character varying(50)'),
Tab.Col.value('(courseId)[1]', 'BIGINT'),
Tab.Col.value('(yearId)[1]', 'BIGINT'),
Tab.Col.value('(cityIdPass)[1]', 'BIGINT'),
Tab.Col.value('(stateIdPass)[1]', 'BIGINT'),
Tab.Col.value('(addressId)[1]', 'BIGINT')
from p_studentDetailsXML.nodes('/Root/StudentDetails') Tab(Col);
以及如何使其在 postgresql 函数中工作?
有什么帮助吗?
Postgres 为写入和读取 xml 数据提供了良好的支持。有关详细信息,请参阅文档: www.postgresql.org/docs/current/static/functions-xml.html
扩展 xml2 提供额外的 xml 功能: http://www.postgresql.org/docs/current/static/xml2.html。 使用
创建扩展CREATE EXTENSION xml2;
如a_horse_with_no_name所说,您可能需要 xpath 或 xpath_table 函数。这里有一个简单的存储过程示例,基于您使用 xpath 函数的数据:
CREATE OR REPLACE FUNCTION insert_student(input_xml xml) RETURNS VOID AS
$$
DECLARE root_xpath TEXT = '/Root/StudentDetails/';
BEGIN
INSERT INTO temp_StudentDetails (studentId, studentFirstName)
SELECT ((xpath(root_xpath|| 'StudentId/text()', input_xml))[1])::text::int,
(xpath(root_xpath|| 'studentFirstName/text()', input_xml))[1];
RETURN;
END;
$$
LANGUAGE plpgsql;
所以你可以调用函数:
SELECT insert_student('
<Root><StudentDetails>
<StudentId>10</StudentId>
<studentFirstName>John</studentFirstName>
</StudentDetails></Root>');