Разница между языком sql и языком plpgsql в функциях PostgreSQL
Я очень новичок вРазработка базы данных поэтому у меня есть некоторые сомнения относительно моего следующего примера:
Функция 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;
И то и другоефункции можно назвать какselect f1('world')
или жеselect f2('world')
.
Если я позвонюselect f1('world')
выход будет:
`hello! world`
А такжевыход заselect f2('world')
:
ОШИБКА: у запроса нет места назначения для данных результата. СОВЕТ: Если вы хотите отменить результаты SELECT, используйте вместо этого PERFORM. КОНТЕКСТ: функция PL / pgSQL f11 (с изменением символов) строка 2 в операторе SQL****** ошибка******
Я хочу знать разницу и в каких ситуациях я должен использоватьlanguage sql
или жеlanguage plpgsql
.
Любая полезная ссылка или ответы относительно функций будут высоко оценены.