Dbms Exp8 Solution

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

EXP-8

1. Write a block/procedure to display sum of digits of a three digit number


CREATE OR REPLACE FUNCTION sum_of_digits(num INTEGER) RETURNS INTEGER AS
$$
DECLARE
digit1 INTEGER; digit2
INTEGER; digit3 INTEGER;
sum INTEGER; BEGIN digit1
:= num / 100; digit2 := (num %
100) / 10; digit3 := num % 10;
sum := digit1 + digit2 + digit3;
RAISE NOTICE 'Sum of digits of % is %', num, sum;
RETURN sum;
END;
$$ LANGUAGE PLPGSQL;
select sum_of_digits(123);

2. Write a block/procedure to display square of 1 to 10


CREATE OR REPLACE FUNCTION squares() RETURNS VOID AS $$
DECLARE num INTEGER := 1; square INTEGER;
BEGIN
WHILE num <= 10 LOOP square :=
num * num;
RAISE NOTICE '%^2 = %', num, square; num :=
num + 1;
END LOOP;
END;
$$ LANGUAGE PLPGSQL;
select squares();
3. Write a block to
display/procedure Fibonacci
series upto 8 th term (start with
0,1)
CREATE OR REPLACE
FUNCTION fibonacci()
RETURNS VOID AS $$
DECLARE prev1 INTEGER := 0; prev2 INTEGER := 1; fib INTEGER; i
INTEGER := 1; BEGIN
WHILE i <= 8 LOOP IF
i = 1 THEN
fib := 0;
ELSEIF i = 2 THEN
fib := 1;
ELSE
fib := prev1 + prev2;
prev1 := prev2; prev2
:= fib;
END IF;
RAISE NOTICE 'Fibonacci(%): %', i, fib; i
:= i + 1; END LOOP;
END;
$$ LANGUAGE PLPGSQL;
select fibonacci();

4.Write a PL/block to access contents of any one tuple of employee relation. Display the contents using
raise notice statement

create table emp_record9629( emp_id varchar(4), emp_name


varchar(20), emp_address varchar(20)); insert into
emp_record9629 values('1','Aston','Thane'); insert into
emp_record9629 values('2','Atharva','Malad'); insert into
emp_record9629 values('3','John','Vasai');
CREATE OR REPLACE FUNCTION get_employee(id varchar) RETURNS VOID AS $$
DECLARE
emp_val RECORD;
BEGIN
SELECT * INTO emp_val FROM emp_record9629 WHERE emp_id = id; RAISE
NOTICE 'Employee ID: %, Name: %, Address: %', emp_val.emp_id,
emp_val.emp_name, emp_val.emp_address;
END;
$$ LANGUAGE PLPGSQL;
select get_employee('2');

You might also like