Postgresql 将整数和文本列表传入Postgres函数

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

创建一个可以将表名和整数值列表传递到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  
 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."

函数的前两个参数是文本数组,但您使用标量参数值调用它。这使引擎认为参数是文本数组表达式,必须从消息告诉您的内容开始。您甚至似乎没有使用函数体中的前两个参数,至少在发布时是这样。所以它们没有多大意义,可以从函数的定义中删除。与您的问题无关,但是:您应该真正避免那些可怕的引用标识符。他们的麻烦远比他们值得的多。