【问题标题】:Inserting data in multiple tables using Oracle stored procedure使用Oracle存储过程在多个表中插入数据
【发布时间】:2013-10-10 01:48:28
【问题描述】:

我有 4 个表,例如 table1、table2、table3 和 table4,它们是相互关联的。 Table1 将生成一个主键,将在其余表中用作参考键。

我必须使用这个主键在表 4 中插入多条记录。 由于要求是事务要么成功提交,要么回滚所有更改。这就是我想在存储过程中写这个的原因。 但是卡住了,当我不得不为 table4 传递多行数据时。

任何人都可以请建议,我怎样才能做到这一点?

谢谢,提前。

【问题讨论】:

  • 你的主键是自动递增的吗?
  • 是的,所有表的主键都会自动递增。

标签: c# .net oracle stored-procedures


【解决方案1】:

我猜你想做这样的事情

CREATE OR REPLACE PROCEDURE myproc
(
 invId IN NUMBER,
 cusId IN NUMBER
)
IS
    temp_id  NUMBER; 
BEGIN 
    INSERT INTO myTable (INV_ID) 
    VALUES (invId)
    returning id into temp_id;

    INSERT INTO anotherTable (ID, custID) 
    VALUES (temp_id, custId);  
END myproc;

【讨论】:

  • 是的,没错。这将适用于前 3 个表,我必须在其中插入单个记录。但是对于第四张表,我必须插入多条记录。我不知道我怎样才能做到这一点。
  • 我猜你已经在存储过程的参数中有多个值。你只需要使用 temp_id 变量。在存储过程结束之前,我不会丢失值。
  • 没有。存储过程的参数将等于否。所有表的列。但是在我必须插入多行的第四个表的情况下,没有。的值无法固定。
  • 如果您请发布您用于插入第四张表的当前存储过程
  • 我还没有写任何程序在第四个表中插入数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-10
  • 1970-01-01
相关资源
最近更新 更多