问题标签 [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 投票
0 回答
315 浏览

oracle12c - 在 OCCI 中按名称绑定参数?

我正在将我们的数据库层从 OCI for Oracle 7 升级到 OCCI for Oracle 12c。在 OCI (7) 中,可以通过数字绑定参数,这样在语句中,无论语句中的位置和位置如何,SELECT * FROM TestTable WHERE name = :2 and number = :1您都可以绑定一个值:1和一个值。:2 :1:2

由我们旧代码的较高层生成的语句通常是这种形式SELECT * FROM TestTable WHERE name = :2 and number = :1,并且稍后给出的要绑定到参数的值是按参数编号而不是参数位置的数字顺序在列表中提供的。 .

在 OCI 12c 中,可以按名称和位置绑定参数(但显然不再按数字),但在 OCCI (12c) 中,似乎只能按位置绑定。这显然给我们带来了问题,因为我们只知道值应该绑定到的参数的名称/编号。

所以,我的问题是:除了解析 SQL 语句并将名称映射到位置之外,还有什么方法可以在 OCCI 中按名称或编号进行绑定?利用 OCI 按名称绑定的可能性的东西?

0 投票
1 回答
183 浏览

c++ - 尝试在 Visual Studio 2005 上运行使用 Oracle 库的应用程序

我正在尝试运行使用 OCCI 库的现有应用程序 - 例如在Linker->Input项目中已指定oraocci10.lib

我正在使用 Visual Studio 2005。

这就是我所做的。

  1. 从这里下载10.2.0.5包(第 1 和第 5 包):

    http://www.oracle.com/technetwork/topics/winsoft-085727.html

  2. 设置环境变量(我似乎安装了 Oracle 客户端):

    ORACLE_HOME C:\app\g\product\11.2.0\client_2

    TNS_ADMIN C:\app\g\product\11.2.0\client_2\Network\Admin

  3. 在我的项目中设置 oracle 库的路径:

    C/C++->General->包含目录:D:\instantclient_10_2\sdk\include

    链接器->附加库目录:D:\instantclient_10_2\sdk\lib\msvc

  4. 在代码生成->运行时库中:多线程 DLL (/MD)

我的应用程序编译但我得到运行时错误。当我将此应用程序作为独立 exe 运行时(不编译可执行文件,我也单独获得了该 exe),它工作正常,与数据库连接等。

因此,我如何针对这些 OCCI 库配置 Visual Studio 一定有问题。我真的很感谢我出错的一些帮助,因为我快到无法猜测我做错了什么的地步了。

提前致谢

0 投票
2 回答
1388 浏览

linux - OCCI 与 gcc 5 的链接错误

最近我将我的 gcc 从 4.1.2 升级到了 5.2.0。

这导致了与 OCCI 库的链接错误:

我正在尝试运行的源代码:

联动错误:

我注意到未定义的引用包含与 c++11 相关的符号,我猜这与我正在使用的新 gcc 编译器有关。

来自 occiControl.h 的函数声明

OCCI_STD_NAMESPACE::string getString(MetaData::AttrId attrid)

我正在使用 Centos 6.6 和最新的 OCCI 版本 Instantclient-basiclite-linux.x64-12.1.0.2.0。

有任何想法吗?

谢谢,大卫

0 投票
1 回答
6788 浏览

c++ - OCCI:ORA-01455: converting column overflows integer datatype

table:

cpp code:

when i use occi to query data from oracle, i get this error: ORA-01455: converting column overflows integer datatype

my system is centos 64bit,and i know int is 2147483647,and oracle INTEGER is -231) to (231)-1. so why i get this overflow error? tks.

0 投票
0 回答
921 浏览

c++ - Visual Studio 2012:使用 VC++ (MFC) 和 Oracle OCCI 库的 Oracle 数据库程序

我尝试使用 VC++ MFC (Visual Studio 2012) 连接 oracle XE (11.2.0.2.0) 数据库。以下是 oracle 网站上给出的示例代码。

在上面的代码中,注释中的 4 行,它工作正常。否则,它仅适用于一个循环 (i=1) 并显示正确的消息(仅 1 次)。之后,得到以下错误

0x51A4CCC8 (msvcp110d.dll) 处的第一次机会异常。选择中断后,它会转到文件 xutility 和 function

  1. 如何解决这个错误?
  2. 通常使用 VC++ MFC 连接 oracle 的最佳实践是什么?

环境:
Windows 8.1 (64)
Oracle XE (11.2.0.2.0)
OCCI 库:Instant Client Package - SDK:用于使用 Instant Client 开发 Oracle 应用程序的附加头文件和示例 makefile 下载 Instantclient-sdk-nt-11.2.0.2。 0.zip
Visual Studio 2012(调试 - 配置)

编辑
在 getString() (varchar2 字段)的情况下引发此错误。当使用带有 getInt() 的整数字段时,它工作正常。

0 投票
2 回答
2591 浏览

c++ - c++ 视觉工作室 2015 和 OCCI

是否可以在 Microsoft Visual Studio 2015 社区中使用 OCCI(Oracle c++ 调用接口),如果可以,如何使用?

在 Oracle 下载部分,我只能找到适用于 Visual Studio 2010 或更低版本的 OCCI。我需要切换到VS2010才能使用它吗?

0 投票
0 回答
146 浏览

c++ - 我们可以在没有 OCCI 的情况下从 Unix 系统连接到 Oracle 数据库吗?

我们可以在没有 OCCI 的情况下从 Unix 系统连接到 Oracle 数据库吗?是否需要安装 Instant Client 才能使用数据库连接?

请提出建议。谢谢

0 投票
0 回答
1746 浏览

c++ - 使用 Visual Studio 2012 C++ 连接到 Oracle 11.2

我正在尝试使用 OCCI 和 Visual Studio 2012 c++ 连接到 Oracle 11.2。

我已按照以下步骤操作。

  1. 获取instantclient-basic-windows.x64-11.2.0.4.0、instantclient-sdk-windows.x64-11.2.0.4.0和instantclient-sqlplus-nt-11.2.0.4.0并解压到C:(那么应该是C:\instantclient_11_2)

  2. 为 Visual Studio 2010 提取 OCCI(这是http://www.oracle.com/technetwork/database/occidownloads-083553.html上的最新版本 )

  3. 配置
    在 C:\instantclient_11_2\vc10 中添加来自 OCCI 的 oraocci11.dll 和 oraocci11d.dll。在 C:\instantclient_11_2\sdk\lib\msvc\vc10 添加 oraocci11d.lib 和 oraocci11.lib

  4. 将系统路径变量中的路径设置为C:\instantclient_11_2\sdk\lib\msvc\vc10;C:\instantclient_11_2;

  5. 在 project->properties->linker->Input->Additional Dependencies C:\instantclient_11_2\sdk\lib\msvc\vc10\oraocci11.lib C:\instantclient_11_2\sdk\lib\msvc\vc10\oraocci11d 中设置库路径。库

  6. 编辑 VC++ 目录包括 C:\instantclient_11_2\sdk\include;$(IncludePath) 库目录:C:\instantclient_11_2\sdk\lib\msvc\vc10;$(LibraryPath)

  7. 64位配置环境

  8. 工具->选项-调试->符号->微软符号服务器(如有必要)

该程序,

但我不断收到以下问题,

“testSample4.exe”(Win32):已加载“C:\instantclient_11_2\sdk\lib\msvc\vc10\oraocci11.dll”。无法找到或打开 PDB 文件。

testSample4.exe 中 0x000007FEFD41ADCD 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x000000000031E7E8 处的 oracle::occi::SQLException。

然后得到错误:属性 OCI_ATTR_USERNAME 大于最大允许长度 255

有人可以帮我解决这个问题吗...

0 投票
0 回答
243 浏览

c++ - 从 OCCI / C++ 验证 Oracle SQL 语句

问题

我们想验证 Oracle SQL 语句在语法上是否正确,仅引用已知的表、视图、列等。

Oracle 12c 的 OCI – 只能解析

使用 Oracle 12c 的 OCI(Oracle 调用接口),可以先使用创建语句OCIStmtPrepare(),然后OCIStmtExecute()使用特殊模式调用OCI_PARSE_ONLY。这将导致 Oracle 解析语句而不实际执行它。

Oracle 12 的 OCCI – 不可能?

现在,我们为 Oracle 12c 使用 OCCI(Oracle C++ 调用接口)。似乎没有办法强制 Oracle 解析语句而不执行它。当调用该Connection::createStatement()方法然后调用Statement::status()返回的语句时,Oracle 会告诉您该语句是,PREPARED但解析该语句被推迟到该语句实际执行调用 egStatement::execute()所以似乎没有一种方法可以在不执行的情况下解析该语句。

有人知道使用 OCCI for Oracle 12c 无需执行 SQL 语句即可解析的方法吗?

0 投票
1 回答
1282 浏览

cmake - CMake 找不到 C++ Oracle 应用程序的 OCCI

编辑:已经足够改变了,我已经提出了一个新问题。 你可以在这里找到它


我正在尝试使用 OCCI 使用 C++ 连接到 Oracle 12c。我将 CLion2016.1 与受支持的 Cygwin 版本一起使用。Windows 7. 昨天(2016 年 3 月 29 日)下载了 Oracle 即时客户端(基本和 sdk)

注意:C:/Users/hunrt/libs已添加到我的系统路径中。

我只有一个main.cpp文件:

如果我使用这个 CMake 文件,我会收到以下错误。注释掉的 find_library() 调用是我试图让它工作的不同方式。我每次都收到相同的错误消息(我一次只使用一个)。
制作文件

错误

如果我删除 find_library() 和 target_link_libraries() 调用,则会收到以下错误:

我尝试过的其他事情我
尝试将 libs、dll 和 sym 文件放入项目中,与 CMakeLists.txt 文件位于同一目录中,但我收到相同的错误消息。


任何帮助表示赞赏。谢谢。


根据 usr1234567 的建议进行编辑

制作文件

错误



从 Cygwin 切换到 MinGW

制作文件


使用上面相同的 main.cpp 我得到以下错误: