복붙노트

[SQL] PostgreSQL의 기능의 언어 SQL 및 언어 plpgsql의 차이

SQL

PostgreSQL의 기능의 언어 SQL 및 언어 plpgsql의 차이

내 다음의 예에 관한 몇 가지 의심이 때문에 데이터베이스 개발에서 매우 새로운 오전 :

F1 함수 () - 언어 SQL

 create or replace function f1(istr  varchar) returns text as $$ 
 select 'hello! '::varchar || istr;
 $$ language sql;

함수 F2 () - 언어 plpgsql

 create  or replace function f2(istr  varchar)
 returns text as $$ 
 begin select 'hello! '::varchar || istr; end;
 $$ language plpgsql;

유용한 링크 나 기능에 대한 대답은 많은 감사합니다.

해결법

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

    1.더 나은 선택은 다음과 같습니다 :

    더 나은 선택은 다음과 같습니다 :

    더 나은 선택은 다음과 같습니다 :

    또한 고려 :

    실제로 PL / pgSQL의 함수에서 반환하려면, 당신은 쓸 수 있습니다 :

    CREATE FUNCTION f2(istr varchar)
      RETURNS text AS
    $func$
    BEGIN
       RETURN 'hello! ';  -- defaults to type text anyway
    END
    $func$ LANGUAGE plpgsql;
    

    다른 방법이 있습니다 :

  2. ==============================

    2.PL / pgSQL의는 SQL을 기반으로 PostgreSQL을 특정 절차 적 언어입니다. 그것은 루프, 변수, 에러 / 예외 처리 등 모든 SQL이 유효 PL / pgSQL의 인을 가지고 - 당신이 발견으로, 예를 들어, 당신은 INTO 또는 RETURN QUERY없이 SELECT를 사용할 수 없습니다. PL / pgSQL의도 원샷 절차 DO 블록에 사용될 수있다.

    PL / pgSQL의는 SQL을 기반으로 PostgreSQL을 특정 절차 적 언어입니다. 그것은 루프, 변수, 에러 / 예외 처리 등 모든 SQL이 유효 PL / pgSQL의 인을 가지고 - 당신이 발견으로, 예를 들어, 당신은 INTO 또는 RETURN QUERY없이 SELECT를 사용할 수 없습니다. PL / pgSQL의도 원샷 절차 DO 블록에 사용될 수있다.

    SQL 함수는 순수 SQL을 사용할 수 있지만, 그들은 종종 더 효율적이고 그들이 쓰기에 간단하게 당신이이 BEGIN ... END가 필요하지 않습니다 있기 때문에; 블록 등 SQL 함수 PL / PGSQL 마찬가지하지 않은 인라인 수있다.

    일반 SQL이 충분하다 그들이 어디에 절차 적으로 생각하는 데 사용하고 있기 때문에 사람들은, PL / pgSQL의를 사용합니다. 대부분의 경우 당신은 당신이 PL / pgSQL의 당신은 아마 실제로 필요하지 않은 생각하면. 재귀 CTE를, 측면 쿼리 등은 일반적으로 대부분의 요구를 충족.

    추가 정보를 원하시면 설명서를 참조하십시오.

  3. ==============================

    3.당신이 반환 값으로 함수 내에서 쓴 선택 쿼리를 만들 :

    당신이 반환 값으로 함수 내에서 쓴 선택 쿼리를 만들 :

     create  or replace function f2(istr  varchar)
     returns text as $$ 
     begin return(select 'hello! '::varchar || istr); end;
     $$ language plpgsql;
    
  4. from https://stackoverflow.com/questions/24755468/difference-between-language-sql-and-language-plpgsql-in-postgresql-functions by cc-by-sa and MIT license