Я очень новичок в разработке баз данных, поэтому у меня есть некоторые сомнения относительно моего следующего примера:
Функция 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. CONTEXT: функция PL/pgSQL f11 (переменная символов) строка 2 в операторе SQL ****** Ошибка ******
-
Я хочу знать разницу и в каких ситуациях я должен использовать
language sql
илиlanguage plpgsql
.
Любая полезная ссылка или ответы, касающиеся функций, будут очень оценены.