2016-12-19 19 views
-2

私はパッケージシステムを実装する必要があります。私は、テーブルに以下の表および挿入を持っている:SQL:ストアドプロシージャのテーブルの結果を表示

--a 
create table client(
IdClient number(5), 
NameClient varchar2(20), 
Address varchar2(20), 
primary key(IdClient) 
); 

create table tpackage(
IdPackage number(5), 
IdClient number(5), 
WLocation varchar2(20), 
Courier varchar2(20), 
DeliveryTime date, 
Status varchar2(20), 
primary key(IdPackage), 
constraint fk_package foreign key(IdClient) references client(IdClient) 
); 

insert into client values(1,'Robb','Dimitrie Cantemir 1'); 
insert into client values(2,'Ion','Aleea Cascadei 15'); 
insert into client values(3,'Popan','Progresului 1'); 
insert into client values(4,'Pop','Carei 15'); 
insert into client values(5,'Grozavescu','Vasile Pirvan 1'); 
insert into client values(6,'Popa','Orsova 11'); 

insert into tpackage values(01,1,'Diminetii 2','Ilie','22-Jan-2017','in-transit'); 
insert into tpackage values(02,6,'Liege 1','Popescu','23-NOV-2016','delivered'); 
insert into tpackage values(03,4,'Crisana 3','Alexandru','20-Jan-2017','in-transit'); 
insert into tpackage values(04,3,'Torontal 14','Stefan','18-Dec-2016','delivered'); 
insert into tpackage values(05,2,'Carei 15','Ionescu','23-Feb-2017','in-transit'); 

私は、パラメータとして与えられたクライアントのためにあるトランジットパッケージのすべてのパッケージ情報を表示するストアドプロシージャを実装する必要があります。これまで私が行ってきたことです:

create or replace procedure displayPackages(i_IdClient number) as 
begin 
--SELECT t.Status from tpackage as t inner join client as c on t.IdClient = c.IdClient where t.Status='in-transit' and c.IdClient = IdClient and t.IdClient = IdClient and c.IdClient = t.IdClient; 
select t.status,c.NameClient from tpackage t,client c where t.Status='in-transit' and c.IdClient = i_IdClient and c.IdClient = t.IdClient; 
end displayPackages; 

しかしこれは動作しません。前もって感謝します!

+0

古い形式を使用している場合は、これらの結合を適切なANSI形式の結合に変更することをお勧めします。 –

+0

"not working"を定義します。 PLS-00428のコンパイルエラーが発生して、 'into'節が出てきたと思われますが、推測する必要はありません。あなたが12cであれば、私の返信のように暗黙的な結果セットを見てください:http://stackoverflow.com/questions/351489/is-it-possible-to-output-a-select-state-from-a- pl-sql-block/40360471#40360471 –

答えて

0

PL/SQLでは、選択するだけではありません。クエリの結果を格納する変数を指定する必要があります。

create or replace procedure displayPackages(i_IdClient number) as 
tstatus tpackage.status%type; 
cname client.NameClient%type; 
begin 
select t.status,c.NameClient into tstatus, cname 
    from tpackage t inner join client c on (c.IdClient = t.IdClient) 
    where t.Status='in-transit' and c.IdClient = i_IdClient; 
--after selecting data into variables you can do your calculations or other operations on variables 
end displayPackages; 
関連する問題