2011-03-07 54 views
2

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

对于它的价值,代码包含了我认为是正常的事情:

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

回答

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之前上下文已被清除。

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

0

使用

之前声明的情况下

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

相关问题