私はこの手順を持っており、すべての注文を同時に印刷するために無名ブロックを作成する必要があります。それはここに役立ちます場合は、ここでの手順手順を印刷する匿名ブロック
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;
があるテーブル
--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');
用のテーブルの作成とデータがあるので、どのように私は、各注文の項目別の請求書を印刷するには無名ブロックを得るのですか?私はOracle PL/SQLを使用しており、SQL Developerで作業しています。ここに私が意味するものの例があります:
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
私は各注文に表示するようなものが必要です。
これは、オラクルですか? PL/SQL、SQLではありません。 – skaffman
はいこれはoracle pl/sqlです –