i have this procedure and i have to create an anonymous block to print all the orders at same time. here is the procedure
create or replace procedure Item_bill
is
sSQLstr VARCHAR2(1000);
type refcur is ref cursor;
rcur refcur;
stmt1 VARCHAR2(300);
BEGIN
sSQLstr := 'select t.n_portions||'' portions of ''||p.dish_name||'' at '' ||p. price|| '' pounds :''||
t.n_portions*p. price
from Customer_order s,food_order t, Dish p
where s.order#=t.order#
and t.dish#=p.dish#';
OPEN rcur FOR sSQLstr;
LOOP
FETCH rcur INTO stmt1;
EXIT WHEN rcur%NOTFOUND;
dbms_output.put_line(stmt1);
END LOOP;
END;
begin
-- Call the procedure
item_bill();
end;
If it helps here is table creation and data for table
--table creation
create table Customer_order( order# NUMBER primary key ,
date_order DATE,
date_required DATE,
address VARCHAR2(30)
);
CREATE TABLE Dish (
dish# VARCHAR2(5) primary key,
dish_name CHAR(15),
vegetarian CHAR(3),
price NUMBER);
CREATE TABLE Drink (
drink# VARCHAR2(6) primary key,
drink_name CHAR(6),
drink_type CHAR(9),
price NUMBER);
CREATE TABLE Food_order (
food_order# VARCHAR2(7) primary key,
order# number references Customer_order (order#) ,
dish# VARCHAR2(5) references Dish(Dish#),
n_portions NUMBER);
CREATE TABLE Drink_order (
drink_order# VARCHAR2(5)primary key,
order# number references Customer_order (order#),
drink# VARCHAR2(6)references drink (drink#),
n_units NUMBER);
-- data insert
Insert into customer_order values ('00001', '03-Apr-09', '07-apr-09','St. Andrew St');
Insert into customer_order values ('00002', '05-Apr-09', '01-May-09', 'St. Andrew St');
Insert into customer_order values ('00003', '12-Apr-09', '27-Apr-09', 'Union St');
Insert into customer_order values ('00004', '12-Apr-09', '17-Apr-09', 'St. Andrew St');
Insert into Dish values ('D0001', 'Pasta bake', 'yes', '6.00');
Insert into Dish values ('D0002', 'Fish pie', 'no', '9.00');
Insert into Dish values ('D0003', 'Steak and chips', 'no', '14.00');
Insert into Dish values ('D0004', 'Stuffed peppers', 'yes', '11.50');
Insert into Dish values ('D0005', 'Ham and rice' , 'no', '7.25');
Insert into Dish values ('D0006', 'Lamb curry' , 'no', '8.50');
Insert into Drink values ('DR0001', 'Water', 'soft', '1.0');
Insert into Drink values ('DR0002', 'Coffee', 'hot', '1.70');
Insert into Drink values ('DR0003', 'Wine' , 'alcoholic', '3.00');
Insert into Drink values ('DR0004', 'Beer' , 'alcoholic', '2.30');
Insert into Drink values ('DR0005', 'Tea' , 'hot' , '1.50');
Insert into food_order values ('F000001', '000001', 'D0003', '6');
Insert into food_order values ('F000002', '000001', 'D0001', '4');
Insert into food_order values ('F000003', '000001', 'D0004', '3');
Insert into food_order values ('F000004', '000002', 'D0001', '10');
Insert into food_order values ('F000005', '000002', 'D0002', '10');
Insert into food_order values ('F000006', '000003', 'D0002', '35');
Insert into food_order values ('F000007', '000004', 'D0002', '23');
Insert into drink_order values ('D000001', '000001', 'DR0001', '13');
Insert into drink_order values ('D000002', '000001', 'DR0002', '13');
Insert into drink_order values ('D000003', '000001', 'DR0004', '13');
Insert into drink_order values ('D000004', '000002', 'DROOO1', '20');
Insert into drink_order values ('D000005', '000002', 'DR0003', '20');
Insert into drink_order values ('D000006', '000002', 'DR0004', '15');
Insert into drink_order values ('D000007', '000003', 'DR0002', '35');
Insert into drink_order values ('D000008', '000004', 'DR0001', '23');
Insert into drink_order values ('D000009', '000004', 'DR0003', '15');
Insert into drink_order values ('D0000010', '000004', 'DR0004', '15');
So how do I get an anonymous block to print an itemised bill for each order? I am using Oracle PL/SQL and working in SQL Developer. Here is an example of what I mean:
6 portions of steak and chips at 14 pounds: 84 pounds 4 portions of pasta bake at 6 pounds: 24 pounds 3 portions of stuffed peppers at 11.50 pounds: 34.5 pounds total food cost for order 000001: 142.50 pounds 13 units of water at 1 pound: 13 pounds 13 units of coffee at 1.70 pounds: 22.1 pounds 13 units of beer at 2.30 pounds: 29.90 pounds total drink cost for order 000001: 65 pounds total cost for order 000001: 207.50 pounds
I need something like that to appear for each order.