注册

设置sql执行超时时间不生效

cfy 2023/04/08 1675 2 已解决

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
DM Database Server 64 V8
DB Version: 0x7000c
03134283950-20221121-175072-20024
【操作系统】:win10
【CPU】: intel x86_64
【问题描述】*:客户端在执行sql语句时,希望能设置超时时间,如果在指定时间内数据库没有返回,则返回超时报错,不再等待。

参考手册,使用以下代码设置超时时间,然后执行dbms_lock.sleep()测试:

/* 申请连接句柄 */ CHECK(dpi_alloc_con(henv, &hcon), DSQL_HANDLE_DBC, hcon); CHECK(dpi_set_con_attr(hcon, DSQL_ATTR_CONNECTION_TIMEOUT, (dpointer)3, 0), DSQL_HANDLE_DBC, hcon); /* 设置3秒超时 */ /* 申请语句句柄 */ CHECK(dpi_alloc_stmt(hcon, &hstmt), DSQL_HANDLE_DBC, hcon); CHECK(dpi_set_stmt_attr(hstmt, DSQL_ATTR_QUERY_TIMEOUT, (dpointer)3, 0), DSQL_HANDLE_STMT, hstmt); /* 设置3秒超时 */ CHECK(dpi_prepare(hstmt, "dbms_lock.sleep(5)"), DSQL_HANDLE_STMT, hstmt); print_time(); CHECK(dpi_exec(hstmt), DSQL_HANDLE_STMT, hstmt); print_time(); }

完整测试代码见test.zip

预期执行3秒后超时中断,实际执行了5秒才返回,超时并没有生效。请问是设置超时参数方式不对,还是测试方法有问题?

回答 0
暂无回答
扫一扫
联系客服