[英]not enough values insert with register type Oracle SQL Developer
我試圖做一個自定義記錄類型的變量,為其設置值,然后將其插入表中。 我遇到了困難,我不知道自己在哪里錯。 我檢查了表中的列,它們都是寄存器類型中所有不可為空的列。 但是我收到“值不足”的錯誤。 我正在使用SQL Developer。 這是我的代碼:
set serveroutput on;
DECLARE
TYPE ang_record IS RECORD
(cod employees.employee_id%TYPE,
nume employees.last_name%TYPE,
email employees.email%TYPE,
h_date employees.hire_date%TYPE,
job_id employees.job_id%TYPE,
sal employees.salary%TYPE,
dept employees.department_id%TYPE);
v_ang ang_record;
BEGIN
v_ang.cod := 500;
v_ang.nume := 'Profeanu';
v_ang.email := 'ileana.profeanu@gmail.com';
v_ang.h_date := SYSDATE;
v_ang.job_id := 'SH_CLERK';
v_ang.sal := 2000;
v_ang.dept := 50;
INSERT INTO empil (employee_id, last_name, email, hire_date, job_id, salary, department_id)
VALUES v_ang;
END;
/
ROLLBACK;
您已創建了employees表的記錄類型。 並且您想使用此類型將記錄插入到empil表中。 您已經混合了兩種方法來實現此目的。 第一:
set serveroutput on;
DECLARE
TYPE ang_record IS RECORD
(cod employees.employee_id%TYPE,
nume employees.last_name%TYPE,
email employees.email%TYPE,
h_date employees.hire_date%TYPE,
job_id employees.job_id%TYPE,
sal employees.salary%TYPE,
dept employees.department_id%TYPE);
v_ang ang_record;
BEGIN
v_ang.cod := 500;
v_ang.nume := 'Profeanu';
v_ang.email := 'ileana.profeanu@gmail.com';
v_ang.h_date := SYSDATE;
v_ang.job_id := 'SH_CLERK';
v_ang.sal := 2000;
v_ang.dept := 50;
INSERT INTO empil (employee_id, last_name, email, hire_date, job_id, salary, department_id)
VALUES (v_ang.code, v_ang.nume, v_ang.email, v_ang.h_date, v_ang.job_id, v_ang.sal, v_ang.dept);
END;
/
ROLLBACK;
第二:
set serveroutput on;
DECLARE
v_ang r_empil%rowtype;
BEGIN
v_ang.employee_id := 500;
v_ang.last_name := 'Profeanu';
v_ang.email := 'ileana.profeanu@gmail.com';
v_ang.hire_date := SYSDATE;
v_ang.job_id := 'SH_CLERK';
v_ang.salary := 2000;
v_ang.department_id := 50;
INSERT INTO empil (employee_id, last_name, email, hire_date, job_id, salary, department_id)
VALUES v_ang;
END;
/
ROLLBACK;
希望我已向您說明。
祝你學習順利!!!
我認為問題在於,SQL會比對待數據類型成員單獨對待數據類型對象。 v_ang即使包含多個子元素,也被視為單個項目。
您或者需要創建一個列的類型為ang_record的表,或者像這樣單獨插入元素。
INSERT INTO empil (employee_id, last_name, email, hire_date,
job_id, salary, department_id)
VALUES (v_ang.employee_id, v_ang.last_name, v_ang.email,
v_ang.hire_date, v_ang.job_id, v_ang.salary,
v_ang.department_id);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.