You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.5 KiB
99 lines
2.5 KiB
-- allgemeine Funktionen zu Waren/Warengruppen --
|
|
-- [
|
|
create function produkt_typ_len()
|
|
returns int4 as '
|
|
DECLARE
|
|
len int4;
|
|
BEGIN
|
|
select INTO len bit_length(produkt_typ) from waren.produkt_typen;
|
|
|
|
IF NOT FOUND THEN
|
|
len := 0;
|
|
END IF;
|
|
|
|
RETURN len;
|
|
END;
|
|
' language 'plpgsql';
|
|
|
|
create function produkt_typ(text, int4)
|
|
returns bit varying as '
|
|
/*
|
|
* produkt_typ(name, len)
|
|
*
|
|
* ermittelt den produkt_typ zu einem entsprechenden namen.
|
|
*
|
|
* returns: NULL: falls der name nicht in konten_typen existiert
|
|
* >0: der konten_typ zu dem namen
|
|
*/
|
|
|
|
DECLARE
|
|
row waren.produkt_typen%ROWTYPE;
|
|
min_len int4 := waren.produkt_typ_len();
|
|
sel text;
|
|
BEGIN
|
|
IF $2 < min_len THEN
|
|
RAISE EXCEPTION ''len is to short'';
|
|
END IF;
|
|
|
|
sel := ''select produkt_typ::BIT('' || $2 || '')>>'' ||
|
|
$2-min_len ||
|
|
'' from waren.produkt_typen where bezeichnung='' ||
|
|
quote_literal($1);
|
|
|
|
FOR row IN EXECUTE sel LOOP
|
|
END LOOP;
|
|
|
|
IF NOT FOUND THEN
|
|
RETURN NULL;
|
|
ELSE
|
|
RETURN row.konto_typ;
|
|
END IF;
|
|
END;
|
|
' language 'plpgsql';
|
|
|
|
create function get_warengruppe(text)
|
|
returns warengruppe as '
|
|
DECLARE
|
|
row waren.warengruppe%ROWTYPE;
|
|
BEGIN
|
|
select INTO row * from waren.warengruppe where name=$1;
|
|
|
|
IF NOT FOUND THEN
|
|
RETURN NULL;
|
|
ELSE
|
|
RETURN row;
|
|
END IF;
|
|
END;
|
|
' language 'plpgsql';
|
|
|
|
create function get_warengruppe(int4)
|
|
returns warengruppe as '
|
|
DECLARE
|
|
row waren.warengruppe%ROWTYPE;
|
|
BEGIN
|
|
select INTO row * from waren.warengruppe where _id_=$1;
|
|
|
|
IF NOT FOUND THEN
|
|
RETURN NULL;
|
|
ELSE
|
|
RETURN row;
|
|
END IF;
|
|
END;
|
|
' language 'plpgsql';
|
|
|
|
create function warengruppe_id(text)
|
|
returns int4 as '
|
|
DECLARE
|
|
row waren.warengruppe%ROWTYPE;
|
|
BEGIN
|
|
select INTO row * from waren.warengruppe where name=$1;
|
|
|
|
IF NOT FOUND THEN
|
|
RETURN NULL;
|
|
ELSE
|
|
RETURN row._id_;
|
|
END IF;
|
|
END;
|
|
' language 'plpgsql';
|
|
-- ]
|
|
-- Ende allgemeine Funktionen zu Waren/Warengruppen --
|