这是我的场景:我有一张员工表,我只需要考虑一个属性(薪水)就可以进行练习,所有其他属性都不需要。我必须创建另一个表(least_earners)并在该表中插入来自员工的最后 n 个(从用户输入)收入者。
我已经这样做了,但我想知道是否可以或者我是否犯了错误(我正在使用 Oracle DB 和 PL/SQL)。可以在不创建对象之前创建表吗?它是否像使用 SQL 进行正常创建一样工作?
DECLARE
bottom_n_salaries
NUMBER := &bottom_salaries;
CURSOR emp_cursor IS
SELECT DISTINCT salary
FROM employees
ORDER BY salary ASC;
CREATE TYPE least_earners_obj
AS OBJECT (salary NUMBER(8));
CREATE TYPE least_earners
AS TABLE OF least_earners_obj;
BEGIN
OPEN emp_cursor;
LOOP
INSERT INTO least_earners
VALUE(FETCH emp_cursor);
EXIT WHEN emp_cursor%ROWCOUNT >bottom_n_salaries
OR emp_cursor%NOTFOUND;
END LOOP;
CLOSE emp_cursor;
END;