복붙노트

[SQL] 함수에서 쿼리를 반환?

SQL

함수에서 쿼리를 반환?

나는 PostgreSQL을 8.4을 사용하고 난 많은 행이 쿼리를 반환하는 함수를 만들려고합니다. 다음 기능이 작동하지 않습니다 :

create function get_names(varchar) returns setof record AS $$
declare
    tname alias for $1;
    res setof record;
begin
    select * into res from mytable where name = tname;
    return res;
end;
$$ LANGUAGE plpgsql;

유형의 기록은 단일 행을 할 수 있습니다.

어떻게 전체 쿼리를 반환? 나는 쿼리 템플릿 등의 기능을 사용하고 싶습니다.

해결법

  1. ==============================

    1.

    CREATE OR REPLACE FUNCTION get_names(_tname varchar)
      RETURNS TABLE (col_a integer, col_b text) AS
    $func$
    BEGIN
       RETURN QUERY
       SELECT t.col_a, t.col_b  -- must match RETURNS TABLE
       FROM   mytable t
       WHERE  t.name = _tname;    
    END
    $func$  LANGUAGE plpgsql;
    

    이 같은 전화 :

    SELECT * FROM get_names('name')
    

    주요 포인트 :

    CREATE OR REPLACE FUNCTION get_names(_tname varchar)
      RETURNS TABLE (col_a integer, col_b text) AS
    $func$
    SELECT t.col_a, t.col_b  --, more columns - must match RETURNS above
    FROM   mytable t
    WHERE  t.name = $1;
    $func$ LANGUAGE sql;
    
  2. from https://stackoverflow.com/questions/7548292/return-a-query-from-a-function by cc-by-sa and MIT license