Postgresql 将整数和文本列表传入Postgres函数
创建一个可以将表名和整数值列表传递到postgreSQL的函数Postgresql 将整数和文本列表传入Postgres函数,postgresql,Postgresql,创建一个可以将表名和整数值列表传递到postgreSQL的函数 它的执行是成功的 CREATE OR REPLACE FUNCTION my_schema.join1(table1 text[],table2 text[],emp_num integer[]) RETURNS TABLE( Date date, emp_num int, sal text,LOCATION text,Country text,gender text ) as $BODY$ BEGIN SELEC
它的执行是成功的
CREATE OR REPLACE FUNCTION my_schema.join1(table1 text[],table2 text[],emp_num integer[])
RETURNS TABLE( Date date, emp_num int, sal text,LOCATION text,Country text,gender text ) as
$BODY$
BEGIN
SELECT a."Date",a."emp_num",a."sal",a."gender" ,b."LOCATION",b."Country" FROM my_schema.table1 a
LEFT JOIN my_schema.table2 b
ON a."emp_num" = b."emp_num"
WHERE a."emp" = ANY(emp_num);
END;
$BODY$
LANGUAGE PLpgSQL;
但是当通过传递参数(文本和整数列表的组合)调用函数时,会出现以下错误
SELECT * FROM my_schema.join1('emp_table','add_table',array[1269,652,105]);
错误:
"Array value must start with "{" or dimension information."
函数的前两个参数是文本数组,但您使用标量参数值调用它。这使引擎认为参数是文本数组表达式,必须从消息告诉您的内容开始。您甚至似乎没有使用函数体中的前两个参数,至少在发布时是这样。所以它们没有多大意义,可以从函数的定义中删除。与您的问题无关,但是:您应该真正避免那些可怕的引用标识符。他们的麻烦远比他们值得的多。