2

我有一个使用 Oracle 10g(pro*c 和库)编译的多线程 C 应用程序。该程序每个线程使用一个数据库连接。我们正在迁移到 11g,并且在针对 11g 进行测试时,任何使用全局上下文以外的上下文的东西都会SQL-02134: Invalid runtime context在连接到数据库时生成一个。使用全局上下文可以正常工作。这是从 10g 过渡到 11g 的已知不兼容性,还是我做错了什么?我最终将针对 11g 重新编译所有内容,但出于实现目的,如果我们可以运行 10g 程序直到所有数据库都转换完毕,这会容易得多。

对于它的价值,代码包括我认为是正常的东西:

EXEC SQL ENABLE THREADS;
EXEC SQL CONTEXT ALLOCATE :thread_ctx
EXEC SQL CONTEXT USE :thread_ctx
4

2 回答 2

0
SQL-02134: Invalid runtime context 

Cause: The runtime context associated with this statement has not been properly allocated.

Action: Rewrite the application to execute the EXEC SQL CONTEXT ALLOCATE statement before executing any SQL statements.

所以,我猜因为你说代码在执行 SQL 语句之前包含该语句,所以在执行所述 sql 之前上下文正在被清除。

运行某种调试器以生成跟踪文件,以查看问题的确切传播位置。

于 2011-06-20T12:15:56.273 回答
0

在使用前声明你的上下文

EXEC SQL 开始声明部分;sql_context thread_ctx; EXEC SQL 结束声明部分;

于 2015-07-16T20:25:19.847 回答