복붙노트

[SQL] SQL 쿼리와 기능 결과 데이터에 대한 대상이 없습니다

SQL

SQL 쿼리와 기능 결과 데이터에 대한 대상이 없습니다

내가 선택한 결과 집합을 반환하는 함수를 만들려고하고 있습니다. 내 포스트 그레스는 tst_dates_func (에서이 선택 * 같은 기능을 호출하면 아래와 같이) 오류가 발생합니다 :

ERROR:  query has no destination for result data
HINT:  If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT:  PL/pgSQL function "tst_dates_func" line 3 at SQL statement

********** Error **********

ERROR: query has no destination for result data
SQL state: 42601
Hint: If you want to discard the results of a SELECT, use PERFORM instead.
Context: PL/pgSQL function "tst_dates_func" line 3 at SQL statement

여기에 내가 만든 함수입니다 :

CREATE OR REPLACE FUNCTION tst_dates_func() 
    RETURNS TABLE( date_value date, date_id int, date_desc varchar) as
$BODY$   
BEGIN
    select a.date_value, a.date_id, a.date_desc from dates_tbl a;
END;
$BODY$
      LANGUAGE plpgsql;

나는 위의 오류를 얻고있다 이유를 모르겠습니다. 나는 tst_dates_func에서 선택 * ()를 실행하고 싶습니다; 다시 데이터를 얻을. 필요한 경우 또는 추가 결과 집합을 가입 할 수 있습니다. 문제는 여기에 무엇입니까?

해결법

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

    1.일반 SQL로 수행

    일반 SQL로 수행

    CREATE OR REPLACE FUNCTION tst_dates_func() 
        RETURNS TABLE( date_value date, date_id int, date_desc varchar) as
    $BODY$   
        select a.date_value, a.date_id, a.date_desc from dates_tbl a;
    
    $BODY$
          LANGUAGE sql;
    

    당신은 정말 plpgsql 사용 반환 쿼리가 필요한 경우

    CREATE OR REPLACE FUNCTION tst_dates_func() 
        RETURNS TABLE( date_value date, date_id int, date_desc varchar) as
    $BODY$   
    BEGIN
        perform SELECT dblink_connect('remote_db');
        return query
        select a.date_value, a.date_id, a.date_desc from dates_tbl a;
    
    END;
    $BODY$
          LANGUAGE plpgsql;
    
  2. ==============================

    2.

    In PLPGSQL - use RETURN QUERY
    
    CREATE OR REPLACE FUNCTION tst_dates_func() 
        RETURNS TABLE( date_value date, date_id int, date_desc varchar) as
    $BODY$   
    BEGIN
        RETURN QUERY (select a.date_value, a.date_id, a.date_desc from dates_tbl a);
    END;
    $BODY$
        LANGUAGE plpgsql;
    
  3. from https://stackoverflow.com/questions/16964790/function-with-sql-query-has-no-destination-for-result-data by cc-by-sa and MIT license