【发布时间】:2013-07-24 19:59:34
【问题描述】:
我无法将表与集合合并。 假设我有一张桌子 emp。
这是我的 PL/SQL 代码 sn-p。
TYPE empcol is table of emp%ROWTYPE INDEX BY BINARY_INTEGER;
tmpemp empcol;
-- Code here to load data from a CSV file into tmpemp collection
-- tmpemp(1).emp_id := parsedstring
-- etc.
MERGE INTO emp A using tmpemp B ON A.emp_id = B.emp_id
WHEN MATCHED THEN UPDATE SET A.fname = B.fname, A.lname = B.lname
WHEN NOT MATCHED THEN INSERT (emp_id, fname, lname) VALUES (b.emp_id, b.fname, b.lname);
编译器不喜欢它。它抛出 ORA-0942 - 表或视图不存在。 我究竟做错了什么?或者我怎样才能做得更好。 非常感谢您提供的任何帮助。
【问题讨论】:
-
1) 它不喜欢哪一个?类型还是合并? 2) 表
emp是否存在? -
表 emp 存在。它不喜欢 MERGE 中的 tmpemp。
-
type empcol是否在数据库级别声明?例如。create or replace type empcol as ...。如果要在 SQL 中使用,则需要在数据库模式中全局声明类型。 -
empcol 在过程级别而不是模式级别声明。你认为这是问题所在吗?
标签: sql database oracle plsql merge