【发布时间】:2020-03-13 20:20:52
【问题描述】:
我正在尝试将以下 MS SQL Server 过程迁移到 PostgreSQL 函数。
CREATE PROCEDURE [dbo].[GMC]
AS
BEGIN
DECLARE @LID VARCHAR(3);
DECLARE @xml XML = '<XMLProf><CID>840</CID><MD>101113</MD></XMLProf>';
SELECT @LID = Pay.b.value('.','Varchar(3)')
FROM @xml.nodes('/XMLProf/CID') as Pay(b)
SELECT 'Return Value' = @LID
END
我已经尝试转换为以下,但它不起作用。
CREATE OR REPLACE FUNCTION dbo.GMC()
RETURNS void
AS
$BODY$
DECLARE
LID VARCHAR(3);
bxml XML = '<XMLProf><CID>840</CID><MD>101113</MD></XMLProf>';
BEGIN
SELECT LID = Pay.b.value('.','Varchar(3)')
FROM XMLTABLE('/XMLProf/CID' PASSING bxml) as Pay(b)
SELECT 'Return Value' = LID
end;
$BODY$
LANGUAGE plpgsql;
编辑: 我期待的结果是“840”
我得到的错误是语法错误:
ERROR: syntax error at or near ")"
LINE 12: FROM XMLTABLE('/XMLProf/CID' PASSING bxml) as Pay(b)
有人可以告诉我如何做到这一点。非常感谢任何帮助。
【问题讨论】:
-
您能否添加您期望的结果以及您可能收到的错误消息?
-
我已经更新了。请检查
-
你的 Postgres 版本是多少?
-
你不能从定义为
returns void的函数返回一些东西
标签: sql xml postgresql