mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
167 lines
2.4 KiB
PL/PgSQL
167 lines
2.4 KiB
PL/PgSQL
load 'plpgsql';
|
|
load 'plpgsql_lint';
|
|
|
|
create table t1(a int, b int);
|
|
|
|
create function f1()
|
|
returns void as $$
|
|
begin
|
|
if false then
|
|
update t1 set c = 30;
|
|
end if;
|
|
end;
|
|
$$ language plpgsql;
|
|
|
|
select f1();
|
|
|
|
drop function f1();
|
|
|
|
create function g1(out a int, out b int)
|
|
as $$
|
|
select 10,20;
|
|
$$ language sql;
|
|
|
|
create function f1()
|
|
returns void as $$
|
|
declare r record;
|
|
begin
|
|
r := g1();
|
|
if false then
|
|
raise notice '%', r.c;
|
|
end if;
|
|
end;
|
|
$$ language plpgsql;
|
|
|
|
select f1();
|
|
|
|
drop function f1();
|
|
drop function g1();
|
|
|
|
create function g1(out a int, out b int)
|
|
returns setof record as $$
|
|
select * from t1;
|
|
$$ language sql;
|
|
|
|
create function f1()
|
|
returns void as $$
|
|
declare r record;
|
|
begin
|
|
for r in select * from g1()
|
|
loop
|
|
raise notice '%', r.c;
|
|
end loop;
|
|
end;
|
|
$$ language plpgsql;
|
|
|
|
select f1();
|
|
|
|
create or replace function f1()
|
|
returns void as $$
|
|
declare r record;
|
|
begin
|
|
for r in select * from g1()
|
|
loop
|
|
r.c := 20;
|
|
end loop;
|
|
end;
|
|
$$ language plpgsql;
|
|
|
|
select f1();
|
|
|
|
drop function f1();
|
|
drop function g1();
|
|
|
|
create function f1()
|
|
returns int as $$
|
|
declare r int;
|
|
begin
|
|
if false then
|
|
r := a + b;
|
|
end if;
|
|
return r;
|
|
end;
|
|
$$ language plpgsql;
|
|
|
|
select f1();
|
|
|
|
drop function f1();
|
|
|
|
create or replace function f1()
|
|
returns void as $$
|
|
begin
|
|
if false then
|
|
raise notice '%', 1, 2;
|
|
end if;
|
|
end;
|
|
$$ language plpgsql;
|
|
|
|
select f1();
|
|
|
|
drop function f1();
|
|
|
|
create or replace function f1()
|
|
returns void as $$
|
|
begin
|
|
if false then
|
|
raise notice '% %';
|
|
end if;
|
|
end;
|
|
$$ language plpgsql;
|
|
|
|
select f1();
|
|
|
|
drop function f1();
|
|
|
|
create or replace function f1()
|
|
returns void as $$
|
|
declare r int[];
|
|
begin
|
|
if false then
|
|
r[c+10] := 20;
|
|
end if;
|
|
end;
|
|
$$ language plpgsql;
|
|
|
|
select f1();
|
|
|
|
drop function f1();
|
|
|
|
|
|
create or replace function f1()
|
|
returns void as $$
|
|
declare r int;
|
|
begin
|
|
if false then
|
|
r[10] := 20;
|
|
end if;
|
|
end;
|
|
$$ language plpgsql;
|
|
|
|
select f1();
|
|
|
|
drop function f1();
|
|
|
|
create type _exception_type as (
|
|
state text,
|
|
message text,
|
|
detail text);
|
|
|
|
create or replace function f1()
|
|
returns void as $$
|
|
declare
|
|
_exception record;
|
|
begin
|
|
_exception := NULL::_exception_type;
|
|
exception when others then
|
|
get stacked diagnostics
|
|
_exception.state = RETURNED_SQLSTATE,
|
|
_exception.message = MESSAGE_TEXT,
|
|
_exception.detail = PG_EXCEPTION_DETAIL,
|
|
_exception.hint = PG_EXCEPTION_HINT;
|
|
end;
|
|
$$ language plpgsql;
|
|
|
|
select f1();
|
|
|
|
drop function f1();
|