问题标签 [occi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1041 浏览

c++ - Oracle 12. occi c++ 的“选择更新”的最长持续时间

我们使用 occi 来通过 C++ 进程访问 Oracle 12。其中一项操作必须确保客户端必须选择数据库中的最新数据并根据最新值进行操作。声明是

(我们正在使用类型)。由于某种原因,该命令没有执行,并且数据库表被锁定。所有其他操作都在等待第一个线程完成,但是线程被杀死并且我们已经到达死胡同。

避免这种灾难性情景的最佳解决方案是什么?我可以在语句中设置超时,以便 100% 线程可以对“选择更新”进行操作,比如说最多 10 秒吗?换句话说,执行线程可以锁定数据库表/行,但不能超过预定时间。

这可能吗?

0 投票
1 回答
575 浏览

c++ - OCCI 结果集 getString() 方法返回空指针错误

尝试从当前行 () 中的列中获取字符串值时出现以下错误rs->getString(2)

例如,我rs->getInt(1)用来获取当前行的 ID,它工作得很好。(尽管当我尝试将其作为字符串获取时仍然出现上述错误)

数据库中的值是 varchar2 类型,所以我猜它应该作为字符串值返回。任何人都知道可能是什么问题?

-Win10 64 位
-Visual Studio 2010 -Oracle
db 11.2.0.2.0 64 位 -Oracle
即时客户端 64 位 -
构建 64 位应用程序

0 投票
1 回答
463 浏览

c++ - 在 select 子句中使用 case 时,Oracle 数字精度和小数位数均为零

鉴于此表,

我使用 OCCI(C++ 库)执行以下 SELECT 查询:

在这种情况下,我得到的类型代码是OCCI_SQLT_NUM,但精度和比例都是0. 那(0精度和规模)是什么意思?这是一个错误吗?

在不知道精度/比例的情况下,程序的类型安全、语义和正确性都处于危险之中,因为无法决定将其视为整数还是浮点数

换句话说,CASE(x) WHEN y THEN a ELSE b表达式的类型是什么?可以和a可以吗?我想不是。那么类型是如何计算的呢?INTbCHAR[32]

0 投票
1 回答
423 浏览

c++ - ora-1017 无效的用户名/密码;使用 occi 连接登录被拒绝

尝试使用 occi 在 oracle linux 版本 5 虚拟机上连接到本地 oracle 数据库(版本 11.2.0.3)时出现 ora-1017 错误。
连接代码片:

- 我可以使用 sqlplus 连接到架构。
- 我尝试将 SEC_CASE_SENSITIVE_LOGON 设置为 false,但没有帮助。
- 模式是使用大写的用户名和密码创建的,我也给我的变量提供了大写的值,据我所知,OCCI 无论如何都会将凭据转换为大写,所以它应该可以工作。
- 正确设置了 ORACLE_SID 环境变量,以及 tnsnames.ora 数据。
- 顺便说一句,这段代码首先在我的主机 pc(win10)上使用 Visual Studio 2010 进行了测试,它工作正常,但在我的 linux 虚拟机(使用 virtualbox)上没有。我使用 tnsnames.ora 和 localhost 中所述的主机进行了尝试,仍然遇到相同的问题,但是 sqlplus 允许我使用 localhost 和 tnsnames 主机进行连接。

我尝试了所有可以在谷歌上找到的东西,但仍然没有,所以如果有人有任何有用的提示,我将不胜感激。

0 投票
1 回答
1080 浏览

c++ - 在代码块上用 C++ 编译 Oracle 数据库环境时出错

我正在尝试开发一个两层程序,为此,我需要通过OCCI使用连接池的接口将我的程序连接到数据库(在本例中为 Oracle)。我已经occi.h在 CodeBlocks 中链接了头文件和目录,但是当我尝试编译时,它显示此错误:

|未定义对 `oracle::occi::Environment::createEnvironment(oracle::occi::Environment::Mode, void*, void* ( )(void , unsigned int), void* ( )(void , void* , unsigned int), void ( )(void , void*))'|

||未定义对 `oracle::occi::Environment::terminateEnvironment(oracle::occi::Environment*)'的引用|

||错误:ld 返回 1 个退出状态| ||=== 构建失败:3 个错误,0 个警告(0 分钟,2 秒)===|

有谁明白这个错误是什么意思?我不是 ace C++ 程序员,所以请多多包涵!

这是发生错误的演示代码:

0 投票
2 回答
2179 浏览

oracle - Ubuntu ORA-24960: 属性 OCI_ATTR_USERNAME 大于最大允许长度 255

我正在尝试在 Ubuntu 上运行以下测试程序,以使用即时客户端 OCCI 库连接到 Oracle 数据库。

编译时没有错误

但是当我跑步时我得到

我正在运行 Ubuntu 16.04、gcc 5.4.0,并且使用即时客户端 11.2 和 12.2 得到相同的结果。

之前有人问过这个问题:https ://stackoverflow.com/questions/40022118/ora-24960-the-attribute-oci-attr-username-is-greater-than-the-maximum但答案不适用于linux(或者我错过了重点)。

任何帮助,将不胜感激。

0 投票
1 回答
945 浏览

c++ - Oracle OCCI setDataBuffer 导致 ORA-01406:获取的列值被截断

我正在使用 setDataBuffer 通过游标检索从存储过程返回的行,因为 setPrefetchRowCount 在这种情况下似乎不起作用。当缓冲区大于返回的总行数时,使用 setDataBuffer 效果很好。在我的情况下,我测试了缓冲区可以容纳 5000 行,返回的行数为 538。当我将缓冲区减少到 100 的长度(max_numrows=100 以下)时,它会在前三个调用 next(max_numrows) 并准确给出与缓冲区很大时的结果相同。但是,在第四次调用时,我得到了异常 ORA-01406: fetched column value was truncated。发生了什么事,我该如何解决这个问题?

数据库

在此处输入图像描述

0 投票
0 回答
318 浏览

c++ - c++ Windows _CrtSetDbgFlag 在调用 3rd 方库时停止工作

我的 Windows 程序包括

  • 一个 C++(MFC) 控制台应用程序my.exe,它发出 _CrtSetDbgFlag 以查看退出时的内存泄漏。

  • 一个 C++(非 MFC)my.dll。此 dll 调用第 3 方库(Oracle 的 OCCI C++ 库)。

my.exe 在其 main() 函数中有故意泄漏:new char[333];

当程序退出时,我看到这些泄漏:-

检测到内存泄漏!转储对象 -> ...myExe.cpp(62) : {384} 正常块位于 0x0087C4B0,333 字节长。

但是,如果我在 3rd 方库中调用某些函数,则退出时不会报告泄漏。也就是说,我可以从我的 dll 中调用一些 occi 函数,但是一旦我调用 occi 函数来实际连接到数据库(这似乎运行良好),那么我的所有泄漏报告都会消失,就好像没有泄漏一样。

我怀疑这是因为虽然我使用的是正确版本的 oracle 的 occi dll,但这使用了 oracle 的较低级别的 oci.dll,它似乎使用了旧版本的 MSVC 运行时。依赖步行者显示:

感谢您的任何评论。

0 投票
0 回答
237 浏览

c++ - Windows下编译OCCI

全部,

在 Windows 上,链接不同库/二进制文件的调试和发布版本确实是个坏主意,因为这可能会导致崩溃。问题是 Windows CRT 对于 Debug 和 Release 是不同的。

我正在开发将连接到 Oracle 数据库执行一些查询然后退出的程序。由于程序仍在开发中,我正在调试模式下编译它。

现在,我到处都找不到下载 OCCI 源代码的方法,也找不到在 Windows 上将其编译为调试版本的方法。可行吗?Oracle 是否为 OCCI 提供了在 Windows 上编译的源代码?是否有可以使用的 Makefile/MSVC 解决方案?我更喜欢后者,但可能可以从前者中找出 MSVC 解决方案。

或者也许调试版本可以在某处下载?

谢谢你。

0 投票
1 回答
56 浏览

c++ - 保存一个 std::map> 在Oracle12c

如何在 Oracle 列中存储数字数组?

我有一个 std::map> mymap ,我想将 mymap 中的所有数据存储在表中。

该表应该有两列

  1. 一个 id,mymap 的键
  2. 这就是我在这里寻找的

存储代表我的键值的 std::vector 需要什么数据类型?

在Oracle12c中是怎么做的?