1

Temat: Prosty kalkulator

Mam takie oto zadanko : Napisz funkcję kalkulator, która przyjmuje 3 parametry, 2 liczby i znak (np. '+')
realizującą 4 podstawowe działania arytmetyczne.

create or replace function test3 (zm1 int, zm2 int, zm3 varchar 80)
returns int as $$
declare
begin
if

i co dalej?

Z góry dziękuje za oferowaną pomoc.

2

Odp: Prosty kalkulator

Dziwne pytanie - prostymi działaniami arytmetycznymi nie ma co obciążać serwer powinieneś to działanie wykonać po stronie klienta, który korzysta z bazy danych. Wydaje się że jeżeli już masz to zrobić na poziomie bazy danych to masz wszystkie dane by zbudować prosty select który zwróci Ci wynik np.

Select 7*6;
select 2+8;
select 5-8;
itd.
Jeśli ta odpowiedź Ci nie wystarcza napisz dlaczego potrzebujesz wykonać te działania w funkcji. (napisz też którą wersją bazy danych się posługujesz)

3

Odp: Prosty kalkulator

Chodzi mi o utworzenie formuły bazując na where i elsif , abym mógł później wstawić zmienne z SELECT i to będzie działało. Używam postgreSQL 9.

4

Odp: Prosty kalkulator

nadal to bardzo dziwne ale OK. Poniżej masz kod

CREATE FUNCTION test3(IN zm1 integer, IN zm2 integer, IN zm3 varchar) RETURNS double precision AS
$BODY$
select case zm3 when '+' then (zm1+zm2)::double precision
                when '-' then (zm1-zm2)::double precision
                when '*' then (zm1*zm2)::double precision
                when '/' then (zm1/zm2)::double precision
                else null::double precision
                end;
$BODY$
LANGUAGE sql
IMMUTABLE
RETURNS NULL ON NULL INPUT;

Sposób użycia:
select test3(1,2,'+')
union all select test3(1,2,'-')
union all select test3(1,2,'*')
union all select test3(1,2,'/')
union all select test3(1,2,'k')
union all select test3(null,2,'+');