Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何在PGSQL中设置参数列表的条件_Postgresql - Fatal编程技术网

Postgresql 如何在PGSQL中设置参数列表的条件

Postgresql 如何在PGSQL中设置参数列表的条件,postgresql,Postgresql,我希望在函数中输入一个整数列表,并在此基础上返回行。在这种情况下,我希望根据雇主id选择一些属性,例如,选择其中雇主id=102103和105 这就是我尝试过的 CREATE OR REPLACE FUNCTION dummy(VARIADIC e_id NUMERIC[]) RETURNS TABLE ( emp_id INT, first_name VARCHAR, last_name VARCHAR, salary INT ) AS $$ BEGIN

我希望在函数中输入一个整数列表,并在此基础上返回行。在这种情况下,我希望根据雇主id选择一些属性,例如,选择其中雇主id=102103和105

这就是我尝试过的

CREATE OR REPLACE FUNCTION dummy(VARIADIC e_id NUMERIC[])
RETURNS TABLE (
    emp_id INT,
    first_name VARCHAR,
    last_name VARCHAR,
    salary INT
)
AS $$
BEGIN 
    RETURN QUERY SELECT em.emp_id, em.first_name, em.last_name, em.salary
    FROM employee em
    WHERE em.emp_id IN e_id;
END; $$
LANGUAGE PLPGSQL;

SELECT *
FROM dummy(102, 103, 105);
错误似乎来自包含WHERE的行。如何根据整数列表e_id进行选择

其中em.emp\u id在e\u id中

由于您处理的是一个数字列表,因此您可以使用而不是:

创建表employeeemp\u id int,名字varchar50,姓氏varchar50,薪水int; 在员工价值观中插入 1、‘a’、‘b’、50、, 2,'c','d',100, 3,'e','f',400

CREATE OR REPLACE FUNCTION dummy(VARIADIC e_id NUMERIC[])
RETURNS TABLE (
    emp_id INT,
    first_name VARCHAR,
    last_name VARCHAR,
    salary INT
)
AS $$
BEGIN 
    RETURN QUERY SELECT em.emp_id, em.first_name, em.last_name, em.salary
    FROM employee em
    WHERE em.emp_id = any (e_id);
END; $$
LANGUAGE PLPGSQL;

SELECT * FROM dummy(1, 2);
其中em.emp\u id在e\u id中

由于您处理的是一个数字列表,因此您可以使用而不是:

创建表employeeemp\u id int,名字varchar50,姓氏varchar50,薪水int; 在员工价值观中插入 1、‘a’、‘b’、50、, 2,'c','d',100, 3,'e','f',400

CREATE OR REPLACE FUNCTION dummy(VARIADIC e_id NUMERIC[])
RETURNS TABLE (
    emp_id INT,
    first_name VARCHAR,
    last_name VARCHAR,
    salary INT
)
AS $$
BEGIN 
    RETURN QUERY SELECT em.emp_id, em.first_name, em.last_name, em.salary
    FROM employee em
    WHERE em.emp_id = any (e_id);
END; $$
LANGUAGE PLPGSQL;

SELECT * FROM dummy(1, 2);
emp_id | first_name | last_name | salary -----: | :--------- | :-------- | -----: 1 | a | b | 50 2 | c | d | 100