c++ - Oracle Pro*C for insert with a sub select query causing ORA-01403 : no data found

标签 c++ sql c oracle embedded-sql

我正在为 Oracle DB 使用带有嵌入式 Pro*C(版本:11.2.0.3.0)的 C++ 代码。我正在运行一个批量插入子句,如下所示:

insert int TBL1 (col1, col2) 
select a.col1, b.col2 from TBL2 a, TBL3 b
where a.col1 = :v and a.col2 = b.col2

我运行此查询以获取一组要插入的记录,并为 :v 绑定(bind)值。

然而,虽然可以插入一些记录,但有些记录失败了

ORA-01403: no data found

我从 sqlca.sqlerrd[2] 中看到,可以插入的行数。所以,我知道可以插入 N 条记录中的 M 条。现在,我想知道哪些记录失败了,所以我需要一条线索,列出可能导致此失败的所有 a.col1 值。 有什么办法吗?任何线索或方向都会非常有帮助。

最佳答案

评论有点长。

您引用的错误是 PL/SQL 错误,已记录 here .这不是 insert 通常会产生的错误。

我的一个猜测是该表有一个插入触发器,而这个触发器导致了问题。

也有可能是您的代码位于较大的 block 中,而 block 中的其他内容导致了错误。

关于c++ - Oracle Pro*C for insert with a sub select query causing ORA-01403 : no data found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31941604/

相关文章:

php - 在 html : returned data object empty 中显示来自 SQL 数据库的数据

SQL 内存 - sys.dm_os_memory_objects

php - 我如何在 cakePHP 中编写带有右连接的子查询?

c - C输入带空格的字符串

c - 反白显示消息

c++ - 是什么导致警告 "no return, in function returning non-void"?

c++ - 数据包转换为具有多个动态数组的结构

c++ - Float64 到 Float32

c - 是否有 printf 的通用转换说明符?

c++ - 错误 : two or more data types in declaration of main?