我真的很陌生,我必须创建一个存储过程。Oracle:存储过程错误
我的想法是,我想输入我的PaperRoll_ID
并获得“Worker_ID”。由于表中的PaperRoll_ID
值是从1到500,而我的Worker_id
值是从1500到2000,所以我想让PaperRoll_ID
等于Worker_id
索引,而不是索引值(我的意思是索引1是第一个Worker_id
我补充说,2是第二等,直到500(工人数))。 PaperRoll_ID
位于表machine_operator
中的表invoice_Paper
和Worker_id
中。
对不起,如果它很难理解,但我缺乏SQL知识,所以我有点难以表达自己。
create or replace PROCEDURE name_worker(pi IN NUMBER, mi OUT NUMBER) IS
BEGIN
Select q.worker_ID2 INTO mi
from invoice_paper z,machine_operator o
where z.PaperRoll_ID=pi AND o.WORKER_ID2 = q.worker_ID2;
END;
表是
create Table invoice_paper(
PaperRoll_ID Number(10) constraint ppr_id not null,
Single_Layer Varchar(20) Default 'None in stock',
Double_Layer Varchar(20) Default 'None in stock',
Manufacturer_FactoryID Integer,
primary key(PaperRoll_ID),
Constraint pprid_invoice Foreign key (Manufacturer_FactoryID) References Paper_Factory(Factory_ID)
);
create table machine_operator(
Insurence_ID number(10) constraint in_numb not null,
Worker_ID2 number(10) constraint worka_id not null,
operator_name Varchar(20),
Email Varchar(30),
Primary key (Insurence_ID, Worker_ID2),
Constraint wka_id Foreign key(Worker_ID2) References worker(worker_id)
);
样本数据和期望的结果将真正帮助表达您想要做的事情。 –
@specbk q是您的查询中的表的别名? –
什么数据库对象由别名'q'表示。它不映射到FROM子句中的任何内容。就目前而言,'invoice_paper'和'machine_operator'之间没有连接标准。 – APC