mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +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();
 |