Search code examples
postgresqlstored-procedurestable-valued-parameters

Passing table valued parameter in Postgres stored procedure


I am supposed to migrate a stored procedure from SQL Server to Postgres.

Here is the code of the procedure in SQL Server:

ALTER proc [dbo].[_GetUsers]
(
    @tblUsersSelected       typParameter READONLY
)
as
SELECT
    Users.*
FROM
    Users
JOIN
    @tblUsersSelected UsersSelected
ON
    Users.iUserID = UsersSelected.IntValue;

I am trying to achieve something similar to the "table valued parameter" in Postgres but failed. Can someone help please?


Solution

  • Use an array of integers:

    CREATE FUNCTION getusers(p_userids integer[]) RETURNS SETOF users
       LANGUAGE sql AS
    'SELECT * FROM users WHERE iuserid = ANY (p_userids)';