Assignment
5 Cursor : SET B
postgres=# \c
company4
psql (8.4.5)
You are now
connected to database "company4".
company4=# create
table company(name varchar(20) primary key,add varchar(50),phone
varchar(20),share_value money);NOTICE:
CREATE TABLE / PRIMARY KEY will create implicit index
"company_pkey" for table "company"
CREATE TABLE
company4=# create
table person(pname varchar(30) primary key,pcity varchar(20));NOTICE: CREATE TABLE / PRIMARY KEY will create
implicit index "person_pkey" for table "person"
CREATE TABLE
company4=# create
table cp(name varchar(30) references company(name) on delete cascade,pname
varchar(30) references person(pname) on delete cascade,nos_of_share int);
CREATE TABLE
company4=# \d
List of relations
Schema |
Name | Type |
Owner
--------+---------+-------+----------
public | company | table | postgres
public | cp | table | postgres
public | person | table | postgres
(3 rows)
company4=# insert
into company values('infosys','abc','020-665544','$5000000');
INSERT 0 1
company4=# insert
into company values('infosystem','abc','020-665545','$6000000');
INSERT 0 1
company4=# insert
into company values('info','pune','020-665545','$7000000');
INSERT 0 1
company4=# insert
into company values('infotec','pune','020-665543','$5500000');
INSERT 0 1
company4=# insert
into company values('wipro','pune','020-665345','$6500000');
INSERT 0 1
company4=# insert
into person values('Rahul','pune');
INSERT 0 1
company4=# insert
into person values('Vidhyadhar','pune');
INSERT 0 1
company4=# insert
into person values('sachin','mumbai');
INSERT 0 1
company4=# insert
into person values('darshan','mumbai');
INSERT 0 1
company4=# insert
into person values('shiva','mumbai');
INSERT 0 1
company4=# insert
into cp values('infosys','Rahul',10);
INSERT 0 1
company4=# insert
into cp values('infosystem','Vidhyadhar',25);
INSERT 0 1
company4=# insert
into cp values('infotec','darshan',5);
INSERT 0 1
company4=# insert
into cp values('info','sachin',15);
INSERT 0 1
company4=# insert
into cp values('wipro','shiva',12);
INSERT 0 1
company4=# select
* from company;
name
| add | phone
| share_value
------------+------+------------+---------------
infosys
| abc | 020-665544 |
$5,000,000.00
infosystem | abc | 020-665545 | $6,000,000.00
info
| pune | 020-665545 | $7,000,000.00
infotec
| pune | 020-665543 | $5,500,000.00
wipro
| pune | 020-665345 | $6,500,000.00
(5 rows)
company4=# select
* from person;
pname
| pcity
------------+--------
Rahul | pune
Vidhyadhar | pune
sachin
| mumbai
darshan
| mumbai
shiva
| mumbai
(5 rows)
company4=# select
* from cp;
name
| pname | nos_of_share
------------+------------+--------------
infosys
| Rahul | 10
infosystem | Vidhyadhar | 25
infotec
| darshan | 5
info
| sachin | 15
wipro
| shiva | 12
(5 rows)
company4=# select
count(pname),sum(share_value) from person,company;
count |
sum
-------+-----------------
25 | $150,000,000.00
(1 row)
company4=# select
sum(share_value) from person,company;
sum
-----------------
$150,000,000.00
(1 row)
company4=# select
count(cp.pname),sum(share_value) from person,company,cp where
person.pname=cp.pname and company.name=cp.name;
count |
sum
-------+----------------
5 | $30,000,000.00
(1 row)
2)
company4=# create
function f11()returns void as '
declare c10
cursor for select count(cp.name),sum(share_value) from person,company,cp where
person.pname=cp.pname and company.name=cp.name;
cnt int;
sm money;
begin
open c10;
loop
fetch c10 into
cnt,sm;
exit when not
found;
raise
notice''Count : %'',cnt;
raise notice''Sm
: %'',sm;
end loop;
close c10;
end '
language 'plpgsql';
CREATE FUNCTION
company4=# select
f11();
NOTICE: Count : 5
NOTICE: Sm : $30,000,000.00
f11
-----
(1 row)
1)
company4=# create
function b11()returns void as '
declare cb1
cursor for select pname,nos_of_share from cp where pname=''sachin'';
p varchar(30);
n int;
begin
open cb1;
loop
fetch cb1 into
p,n;
exit when not
found;
update cp set
nos_of_share=nos_of_share+n where pname=''Rahul'';
update cp set
nos_of_share=nos_of_share-n where pname=p;
end loop;
close cb1;
end '
language
'plpgsql';
CREATE FUNCTION
company4=# select
b11();
b11
-----
(1 row)
company4=# select
* from cp;
name
| pname | nos_of_share
------------+------------+--------------
infosystem | Vidhyadhar | 25
infotec
| darshan | 5
wipro
| shiva | 12
infosys
| Rahul | 25
info
| sachin | 0
(5 rows)
company4=#
No comments:
Post a Comment