[SQL] PostgreSQL의 기능의 언어 SQL 및 언어 plpgsql의 차이
SQLPostgreSQL의 기능의 언어 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.더 나은 선택은 다음과 같습니다 :
더 나은 선택은 다음과 같습니다 :
더 나은 선택은 다음과 같습니다 :
또한 고려 :
실제로 PL / pgSQL의 함수에서 반환하려면, 당신은 쓸 수 있습니다 :
CREATE FUNCTION f2(istr varchar) RETURNS text AS $func$ BEGIN RETURN 'hello! '; -- defaults to type text anyway END $func$ LANGUAGE plpgsql;
다른 방법이 있습니다 :
-
==============================
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.당신이 반환 값으로 함수 내에서 쓴 선택 쿼리를 만들 :
당신이 반환 값으로 함수 내에서 쓴 선택 쿼리를 만들 :
create or replace function f2(istr varchar) returns text as $$ begin return(select 'hello! '::varchar || istr); end; $$ language plpgsql;
from https://stackoverflow.com/questions/24755468/difference-between-language-sql-and-language-plpgsql-in-postgresql-functions by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL의 : 그룹 함수의 잘못된 사용 (0) | 2020.03.23 |
---|---|
[SQL] SQL Server의 진수에서 0을 후행 제거 (0) | 2020.03.23 |
[SQL] SQL 서버 : GROUP BY 절에 쉼표로 구분 된 값을 얻을 [중복] (0) | 2020.03.23 |
[SQL] MySQL의에서 "전체 단어 일치"검색 (0) | 2020.03.23 |
[SQL] 값이 숫자는 MySQL의에있는 경우 감지 (0) | 2020.03.23 |