【发布时间】:2017-01-23 12:52:21
【问题描述】:
我对 SQL 很陌生,我必须创建一个存储过程。
我的想法是我想输入我的PaperRoll_ID 并获取“Worker_ID”。由于表中我的 PaperRoll_ID 值是从 1 到 500,而我的 Worker_id 值是从 1500 到 2000,我想让它使 PaperRoll_ID 等于 Worker_id 索引,而不是按索引的值(我的意思是,索引 1 是我添加的第一个 Worker_id,2 是第二个,依此类推,直到 500(工人数量))。 PaperRoll_ID 位于表 invoice_Paper 中,Worker_id 位于表 machine_operator 中。
对不起,如果很难理解,但是我缺乏很多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之间没有加入标准。 -
我的错误,别名应该是机器操作员表中的o
-
@RajatMishra - 这个答案与 ROWID 有关,它与 ROWNUM 完全不同。虽然它没有实际意义,但两者都不是解决 OP 问题的特别有用的方法。
标签: sql oracle stored-procedures