Am very new in Database development so I have some doubts regarding my following example:
Function f1() - language sql
create or replace function f1(istr varchar)
returns text as $$
select 'hello! '::varchar || istr;
$$ language sql;
Function f2() - language plpgsql
create or replace function f2(istr varchar)
returns text as $$
begin select 'hello! '::varchar || istr; end;
$$ language plpgsql;
Both functions can be called like
select f1('world')
orselect f2('world')
.If I call
select f1('world')
the output will be:`hello! world`
And output for
select f2('world')
:ERROR: query has no destination for result data HINT: If you want to discard the results of a SELECT, use PERFORM instead. CONTEXT: PL/pgSQL function f11(character varying) line 2 at SQL statement ********** Error **********
I wish to know the difference and in which situations I should use
language sql
orlanguage plpgsql
.
Any useful link or answers regarding functions will much appreciated.