来自不同来源的 Oracle 过程插入

标签 oracle stored-procedures insert

我可以在这里知道我做错了什么

create or replace procedure load_category(
p_linea_cod varchar2,
p_modal_cod varchar2,
p_periodo_cod varchar2
)IS

BEGIN
  insert into category(categoryid,externalcategoryid,name)values(
  SEQ_CATEGORY.nextval,
  (select  cod_modal_est,nombre
     from modalidad_estud@ULINK
     where cod_linea_negocio = p_linea_cod
     and cod_modal_est = p_modal_cod)
  );

END;

我正在尝试使用序列和选择语句(工作语句)进行简单的插入,但可以使其工作,只是收到此错误:

ORA-00947: not enough values

我提前感谢您的帮助。

最佳答案

您的选择仅返回一列,而您插入了三列。如果需要将它们保留为空,请将 NULL 值添加到选择中,或将列保留在插入字段列表之外。

[编辑]

修改后的查询:

insert into category(categoryid, externalcategoryid, name)
select 
  SEQ_CATEGORY.nextval, cod_modal_est, nombre
from 
  modalidad_estud@ULINK
where 
  cod_linea_negocio = p_linea_cod
  and cod_modal_est = p_modal_cod;

关于来自不同来源的 Oracle 过程插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6336547/

相关文章:

mysql - 插入延迟及防止sql注入(inject)

php - 从循环php将一行插入mysql

Oracle 总计列和行

database - 哪个数据库最节省空间

事务中插入时 MySQL 外键约束错误

mysql - 如何在 Mysql 存储过程中包含一个 .sh(脚本)文件?

MySQL,如果不存在则插入行

sql - 如果一条记录包含特定值,如何排除整个组?

php - 在 Codeigniter 中使用 oracle 数据库获取错误号

Java 获取输出 CallableStatement JDBC