Я очень новичок в разработке баз данных, поэтому у меня есть некоторые сомнения относительно моего следующего примера:
Функция 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.
Любая полезная ссылка или ответы, касающиеся функций, будут очень оценены.