从mysql迁移到postgresql。
DROP PROCEDURE IF EXISTS prepend;
DELIMITER $$
CREATE PROCEDURE prepend
(
IN inParam VARCHAR(255),
INOUT inOutParam INT
)
BEGIN
DECLARE z INT;
SET z = inOutParam + 1;
SET inOutParam = z;
SELECT inParam;
SELECT CONCAT('zyxw', inParam);
END;$$
DELIMITER ;
CALL prepend('abcdefg', @inOutParam);
mysql过程调用输出为:
abcdefg
zyxwabcdefg
在此处验证输出。
下面是原始的mysql代码片段。
相应的postgresql函数不工作。请帮忙。
DROP FUNCTION prepend;
CREATE OR REPLACE FUNCTION prepend
(
inParam VARCHAR,
INOUT inOutParam INT
)
AS $$
DECLARE z INT;
BEGIN
z := inOutParam + 1;
inOutParam := z;
SELECT inParam;
SELECT CONCAT('zyxw', inParam);
END; $$
LANGUAGE plpgsql;
SELECT prepend('abcdefg', 0);
1条答案
按热度按时间oogrdqng1#
postgresql没有未绑定的查询—这种技术在sybase(如sybase、mssql)和mysql(mariadb)上可用。目前,您可以编写一个函数,该函数可以返回一组值(表格结果)或返回标量、复合或数组(常用函数)。
因此,最接近您程序的设计是:
您可以使用
SELECT
```SELECT * FROM prepend('abcdefg');
BEGIN
SELECT 1;
END;