问题标签 [oracle-call-interface]
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.
qt - 在运行时检查 Qt 插件的依赖关系
这就是我所拥有的: 我的应用程序是用 Qt 4.5 静态编译的。我正在使用qsqloci
插件(静态链接),它动态加载 oracle 库(oci.dll
,...)。
我希望能够检查 oracle DLL 的存在,并根据结果使用插件功能。
还有问题:
- 静态链接的插件有可能吗?
- 如果不是,是否可以动态链接插件(应用程序的其余部分仍然与 Qt 静态链接)?
- 如果没有,有可能吗?
php - 从 Oracle 存储过程返回 OCI8 上的表
我正在通过 OCI8 连接到 Oracle。
我有一个存储过程:
我正在尝试使用 OCI 将其返回给 PHP:
(其余所需的 php 端 OCI 已到位。)
我得到的错误是:
警告:oci_execute():ORA-06550:第 1 行,第 7 列:PLS-00306:调用“OCIGETACCOUNTS”时参数的数量或类型错误
如何获得 $result 来容器表资源
ruby-on-rails - 无法加载 Oracle/OCI 库:RubyGem 版本错误:ruby-oci8(1.0.7 not >= 0)
显然 1.0.7 大于 0
进来并尝试使用我的 Rails 应用程序,我明白了。昨天上班。
所以我删除了 ruby-oci8 1.0.7 gem 并重新安装了它。同样的问题。
尝试了我的应用程序的不同开发分支和同样的问题。
我在 Windows 安装上运行 RoR 并寻找关于可能已损坏的任何想法?
php - SLES 安装 php-oci8 而不编译整个 php/apache?
有没有办法在 Suse Linux Enterprise Server (SLES) 上安装 oracle 的 oci8-pkg 而无需下载 oci8 并用它编译 php?
最终是 zypper 或 pear 之类的安装?
怎么了最新的?
我看到了以下链接:
- http://forums.opensuse.org/english/get-technical-help-here/how-faq-forums/unreviewed-how-faq/455756-installing-oracle-instant-client-11_2-suse-11-4-一个.html
- http://www.oracle.com/technetwork/articles/technote-php-instant-084410.html
- http://www.howforge.com/how-install-oci8-php-5-ubuntu
前两个是关于编译 php,最后一个是关于通过 pear 安装的。
怎么选?它们中的任何一个都过时了吗?
干杯
c++ - 如何从 OCIErrorGet 获取约束错误?
我们的 C++ 程序使用 Oracle 和 OCI 来完成它的数据库工作。有时,用户会触发约束冲突,我们会检测到它,然后显示来自 OCIErrorGet 的错误消息。OCIErrorGet 返回如下字符串:
我正在寻找从 Oracle 错误中提取“MYSCHEMA.CC_MYCONSTRAINT”的最简洁方法。知道约束的名称,我可以显示更好的错误消息(如果我们的代码可以访问约束名称,它可以查找非常有意义的错误消息)。
我可以使用正则表达式或其他东西并假设 Oracle 消息永远不会改变,但这对我来说似乎有点脆弱。或者我可以查找特定的 ORA 代码,然后抓取括号之间的任何文本。但我希望 OCI 有一种更简洁/更健壮的方式,如果约束失败,可以在不诉诸硬编码字符串操作的情况下找出失败约束的实际名称。
有任何想法吗?
oracle - 使用 OCI 驱动程序的 Oracle OID 的 JDBC 连接字符串
我知道如何使用 OID 和瘦客户端 jdbc 驱动程序连接到 oracle:
但是,我无法使用 jdbc、oci 和 oid 进行连接。Oracle 不断输出无效的 URL 消息。我尝试了以下方法:
我已经为 10g 数据库设置了 ORACLE_HOME。我已将库添加到 LD_LIBRARY_PATH。我已经设置了 java.library.path 系统属性。最后,我可以使用 sqlplus 和符号 oid 名称进行连接。
应该使用什么连接字符串?
php - ORA-12154 PHP OCI8 悲伤
使用 Oracle 的 11g XE(免费赠品)配置了 CentOS 5.6 服务器,在本指南的帮助下安装了 OCI8,并获得了与数据库通信的预先存在的(自定义)PHP 应用程序,没有任何问题。调用该服务器 Dev 并开始下一个构建。
我现在使用的 Prod 服务器与 Dev 一样,只是 Oracle 11G 是标准版,而不是免费版。其他一切,据我所知,相同。绝对是相同的 OCI RPM。
警告:ocilogon() [function.ocilogon]:ORA-12154:TNS:无法解析 /var/www/html/blah/blah.php 中指定的连接标识符
我确定我有一个“环境”问题,但我不知道如何解决它。
Oracle、Apache、OCI8 和 PHP 都在同一个盒子上。
什么有效:
tnsping orcl
从产品服务器。sqlplus user@orcl
从产品服务器。phpconfig();
显示所有 OCI8 的东西。比较 Dev 和 Prod 的结果,它们是相同的。- 我还可以从 VPN 另一端的 XP 客户端通过 Toad 进行连接。
我只是无法让 PHP 与数据库对话。快把我逼疯了!
在 Prod 服务器上进行了全局搜索,只有一个 tnsnames.ora 文件。这是它的样子:
ORCL = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED) (SERVICE_NAME = orcl)
)
我应该提供什么会有所帮助吗?只需发表评论。
我真的不想在 Prod 盒子上弄平并重新开始......请帮我解决这个问题!
[编辑]
我猜它没有找到听众。出于好奇,我停止了监听服务并确认错误没有任何变化。
根据要求,这里有一些代码。
引发我上面提到的错误的代码:
变量在另一个文件中设置:
...
但我们可以跳过它。在将它们复制并粘贴到这里时,我花了一点时间来排列括号 - 并找到了一个额外的。
错字!
多哈。/掌心。
oracle - Oracle OCI - 获取延迟和失败
我有一个 Oracle OCI 程序,它在各种平台上投入生产:SLES Linux、Ubuntu、AIX、Solaris 和 HP-UX。我试图在 Redhat 上运行同样的东西,但我遇到了困难。
当使用可滚动游标(使用 调用)并使用执行二进制搜索以获得确切结果集大小的函数时,问题似乎出现OCIStmtExecute
了OCI_STMT_SCROLLABLE_READONLY
。更一般地说,问题似乎是在读取结果集的末尾,然后再读取 OK 值。
我编写了一个测试实用程序,它执行一个必须返回 1 行 ( SELECT COUNT(*) FROM xxx
) 的简单语句。然后它从结果集中检索数据:
如果我首先检索第 1 行,它工作正常。如果我超过了结果集的末尾,当我返回时它会继续正常工作。但是如果我的第一次检查是在结果集之后,一切都会出错:
还有一个奇怪的延迟,在上面的例子中是 10 秒,而它检索应该没问题的行。在调试器中,这在 OCIStmtFetch2 函数的深处——不出所料的是在等待服务器响应的 __read_nocancel 函数中。
有没有其他人见过这个问题?
c++ - Autotools:包括一个预建的 3rd 方库
我目前正在努力将一组 c++ 二进制文件升级为基于 Autotools 的更现代的东西,每个文件都使用自己的 Makefile 集。但是我不知道如何在构建/打包过程中包含第三方库(例如 Oracle Instant Client)。
这是我错过的非常简单的事情吗?
编辑以添加更多细节
我当前的构建环境如下所示:
今天,顶层 build.sh 执行以下步骤:
- 运行每个库的 Makefile 并将输出复制到 /build/lib
- 运行每个二进制文件的 Makefile 并将输出复制到 /build/bin
每个 Makefile 都有一组指向各个同级目录的硬编码路径。不用说,这已成为维护的噩梦。我已经开始测试自动工具,但我卡住的地方是找出相当于将 /src/lib/oci/*.so 复制到 /build/lib 以进行编译时链接和捆绑到发行版中。
oracle - 获取 varchar2 列值时是否可以动态调整缓冲区大小?
给定一个包含许多潜在大字符串的FAT行的表:
create table t (s1 varchar2(4000), ..., sN varchar2(4000))
我知道如何使用直接绑定来获取这些列,即
这种方法的问题是它需要先验地知道所有列的最大大小(描述也可以告诉我,但这需要更多的工作),而且当每个单元格中包含的数据时,它也会强制预分配许多大缓冲区在实践中要小得多。
我尝试使用分段提取,用 OCI_DYNAMIC_FETCH 替换 OCI_DEFAULT 并使用 OCIDefineDynamic 注册我的回调,并且我确实使用 OCI_FIRST_PIECE 调用,以动态提供缓冲区,但这里再次提供的缓冲区必须足够大,而 OCI 没有提供获取的 varchar2 列的实际大小,正如人们所期望的那样,能够根据需要动态调整缓冲区的大小,或者只接受太短的缓冲区并使用 OCI_NEXT_PIECE 再次给我回电,这样我就可以累积值一块一块地。
现在我系统地得到ORA-01406: fetched column value was truncated
谁能提供一个动态分配的提取缓冲区的例子吗?TIA,--DD