CREATE OR REPLACE FUNCTION EQ2(P_A INT, P_B INT, P_C INT)
RETURNS VARCHAR AS $$
DECLARE V_DELTA FLOAT; V_RAIZ INT;
BEGIN
V_DELTA := POWER(P_B, 2) - (4 * P_A * P_C);
IF (V_DELTA < 0) THEN
RAISE WARNING ‘DELTA NEGATIVO’;
RETURN -999;
END IF;
RAISE INFO ‘DELTA %’, V_DELTA;
RAISE INFO ‘V1 = %’, ( (P_B * (-1)) + SQRT(V_DELTA));
RAISE INFO ‘V2 = %’, (2 * P_A);
V_RAIZ := ( (P_B * (-1)) + SQRT(V_DELTA)) / (2 * P_A);
INSERT INTO RAIZES(X1) VALUES (V_RAIZ);
RETURN V_RAIZ;
END $$
LANGUAGE PLPGSQL
– tabela onde serão salvos os dados
CREATE TABLE RAIZES (
PARAMETRO_A INT NOT NULL,
PARAMETRO_B INT NOT NULL,
PARAMETRO_C INT NOT NULL,
X1 FLOAT NULL,
X2 FLOAT NULL
);
SELECT EQ2(1, -1, -30); – chamada da funcao