oracle - ORA-00947: 值不足
问题描述
伙计们,我在运行我的代码时收到错误消息,即 PL/SQL: ORA-00947: no enough values。
declare
type e_type is record ( last_name employees.last_name%type,
email employees.email%type,
hire_date employees.hire_date%type,
job_id employees.job_id%type);
type e_list is table of e_type index by pls_integer;
emps e_list;
begin
for x in 100 .. 110 loop
select last_name,email,hire_date,job_id into emps(x) from employees
where employee_id = x ;
---dbms_output.put_line(emps(x).email);
insert into emp(last_name,email,hire_date,job_id) values emps(x);
end loop;
end;
解决方案
@WilliamRobertson 提出了一个有趣的解决方案(我实际上已经忘记了这种格式)。然而,仍然有一个更简单的解决方案。那就是对 select 和 insert 使用单个 sql 语句,同时完全避免类型和变量声明以及循环:
insert into emp(last_name,email,hire_date,job_id)
select last_name,email,hire_date,job_id
from employees
where employee_id between 100 and 110;
推荐阅读
- android - 实现分页库 3.0 过滤/搜索功能
- javascript - moment().fromNow() 忽略 UTC
- c# - C# Word Cloud 库中未记录的参数
- python - 使用 zip() 循环两个列表以将数字添加到另一个列表
- php - 当连接到用 PHP 实现的 Telnet/sockets 服务器时,PuTTY 显示奇怪的字符
- python - 模拟按顺序修补多个用户输入
- reactjs - NPM 包有效,但 IDE 未找到导入
- pandas - 替换数据框中的公式(熊猫)
- python-3.x - APIError(code=-1099):未找到、未经身份验证或未经授权
- vue.js - 如何以编程方式扩展 v-data-table 组件中的所有行(Vuetify 1.5 版)