Re: PL/PGSQL beginning is hard....

Поиск
Список
Период
Сортировка
От Stephan Szabo
Тема Re: PL/PGSQL beginning is hard....
Дата
Msg-id Pine.BSF.4.10.10011021642110.78513-100000@megazone23.bigpanda.com
обсуждение исходный текст
Ответ на PL/PGSQL beginning is hard....  (Bruno Boettcher <bboett@erm1.u-strasbg.fr>)
Список pgsql-sql
> i am a beginner at SQL and PL/pgsql.... and thus have some surely
> already known problems...
> 
> i have set up some tables, and wanted to play around with inbuild
> functions, and set up the following function:
> 
> CREATE FUNCTION balance (int4) RETURNS int4 AS '
>     DECLARE
>        compte ALIAS FOR $1;
>        actplus accounts.num%TYPE;
>        actminus accounts.num%TYPE;
>        actres accounts.num%TYPE;
>        BEGIN    
>        SELECT SUM(amount) INTO actplus FROM journal WHERE plus=compte;
>        select sum(amount) INTO actminus from journal where minus=compte;
>        actres := actplus - actminus;
>        RETURN actres;
>          END;
>           ' LANGUAGE 'plpgsql';
> 
> 
> Now this works fine, until it hits one of the cases where either of the
> selects returns an empty result (meaning that no line conforming to the
> contraint could be found) in this case even if the other select returns
> a value, the whole function does return nothing....
> 
> what did i wrong, or what do i have to change, to assume the value 0 if
> no hit was found to the select?

Probably this would do it:select coalesce(sum(amount),0) ...


> BTW i am wondering if the same thing could have been achieved with sole
> SQL, and if yes, how....

You might be able to do this with subselects..(select coalesce(sum(amount), 0) from ... ) - (select coalesce...)

So, maybe something like this, if you were say going over a table which
had the compte values:select (select coalesce(sum(amount), 0) from journal where plus=compte)      -(select
coalesce(sum(amount),0) from journal where minus=compte)from table_with_compte_values;
 



В списке pgsql-sql по дате отправления:

Предыдущее
От: Bruno Boettcher
Дата:
Сообщение: PL/PGSQL beginning is hard....
Следующее
От: "Sergei O . Naumov"
Дата:
Сообщение: Help! Storing trees in Postgres