- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在调用另一台服务器中的 Oracle 存储过程。因此,如果出现网络问题,应用程序就会“卡在”OCI_Execute(语句)中。
我需要为此 SP 执行设置超时或者检查连接状态,我不知道通常的方法是什么。
这是我正在做的事情的示例:
#include <stdio.h>
#include <ocilib.h>
OCI_Connection *dbConn;
OCI_Statement *storedProcStmt;
otext *storedProcQuery = "BEGIN TEST_PROC (:param1,:param2,:result); END;";
int main()
{
if(connectDB() != 0){
return (1);
}
storedProcStmt = OCI_StatementCreate(dbConn);
OCI_Prepare(storedProcStmt, storedProcQuery);
char paramResult[3] = "";
OCI_BindString(storedProcStmt, ":param1", "123", strlen("123"));
OCI_BindString(storedProcStmt, ":param2", "abc", strlen("abc"));
OCI_BindString(storedProcStmt, ":result", paramResult, 2);
execStoredProc(storedProcStmt);
printf("RESULT:\n");
printf("%s\n", paramResult);
return (0);
}
int connectDB()
{
if (!OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT))
return (EXIT_FAILURE);
dbConn = OCI_ConnectionCreate("xe", "user", "password", OCI_SESSION_DEFAULT);
if (dbConn == NULL)
{
printf("Could not connect to DB\n");
return (1);
}
printf("Connected to DB\n");
return (0);
}
int execStoredProc(OCI_Statement *stmt)
{
OCI_Execute(stmt);
OCI_Commit(dbConn);
OCI_StatementFree(stmt);
}
正如我所说,它位于函数execStoredProc
的第一行 -OCI_Execute(stmt);
- 网络故障时程序卡住的地方,我该怎么办设置此函数执行的限制,例如 5 秒。我只需要提示要搜索的内容或代码示例,谢谢!
最佳答案
I just need a hint of what to search or a code example
#include <setjmp.h>
#include <signal.h>
#include <unistd.h>
jmp_buf env;
void handler(int signum) { longjmp(env, 1); }
int execStoredProc(OCI_Statement *stmt)
{
int err = 1;
if (!setjmp(env))
{
signal(SIGALRM, handler);
alarm(5);
OCI_Execute(stmt);
alarm(0);
err = 0;
OCI_Commit(dbConn);
}
OCI_StatementFree(stmt);
return err;
}
关于C - 设置存储过程调用超时(ocilib),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37887319/
我有这段代码,它使用 OCIlib: int HoleInstrumentenDiffListeDB(GTree *tree) { OCI_Connection* cn; OCI_Statem
我正在调用另一台服务器中的 Oracle 存储过程。因此,如果出现网络问题,应用程序就会“卡在”OCI_Execute(语句)中。 我需要为此 SP 执行设置超时或者检查连接状态,我不知道通常的方法是
我通过指针将变量cn传递给函数myconnect。当进入调试器时,myconnect() 中的 cn 是正确的。但在 main() 中就没有更多内容了。我不能这样做吗(见下面的代码)?当我在 main
我在针对版本 3.9.0 上的 ocilib (libocilib.a) 编译一些代码时遇到问题: $ ls libocilib.a ocilib.h test.c $ gcc -o test -L.
如何使用配置了主机名和端口号的 OCILIB 连接 Oracle。 默认情况下,它采用 localhost 作为主机名。 我还检查了 OCI_ConnectionCreate 函数,但它不要求主机名和
我在检查 valgrind 中的代码时收到此错误: ==19985== Source and destination overlap in memcpy(0x6d3c328, 0x6d3c328, 5
我收到此错误: code : ORA-00000 msg : The statement is not scrollable 这是代码: char query[] ="select
我正在使用 Ocilib在 Oracle 数据库上执行批量插入,但在填充字符串缓冲区时遇到了一些问题。 文档说: For string/RAW arrays, the input arrayMUST
大家好,我是C语言的新手,我用OCILIB连接了数据库,我在网上找到了这个程序。 #include "ocilib.h" #include /* Example on Microsoft platf
我正在尝试在 Ubuntu 上使用 OCILIB 访问 Oracle 数据库。 我在命令行上使用它: gcc -DOCI_IMPORT_LINKAGE -DOCI_CHARSET_ANSI -L/u0
我尝试使用 OCILib 进行选择。这里是片段: int oraconnect() { OCI_Connection* cn; OCI_Statement* st; OCI_R
我有一个具有以下签名的程序: procedure countryExists(iCountryName in varchar2, oCount out integer) 当我使用 OCILIB 运行它
我正在尝试在 ocilib3.8.1/demo 中编译演示。成功安装 ocilib 库后,我在下面编译演示源 conn.c : #include "ocilib.h" int main(void) {
我有一个在代码块中运行 ocilib_demo 项目的探针,我收到此错误: 无法加载 OCI 共享库 (oci.dll) 操作系统:Windows 10 构建日志: mingw32-gcc.exe -
在哪里可以找到 Suse 10.3 的 ocilib?我需要从这个操作系统与oracle 进行通信。我们的管理员不会进行任何升级,我也无法使用最新版本,因为他在安装时遇到了很多依赖问题。ocilib
我正在尝试将 Oracle 中的值插入到 GTree 中。有时会失败。值 OCI_GetString (rs, 1) 为“111,333,4”,但树插入“ð-X”。我可以修复它吗?或者有没有经过测试的
我是一名优秀的程序员,十分优秀!