更改Oracle Pro*C中的默认数据库

更改Oracle Pro*C中的默认数据库,c,oracle,C,Oracle,我在同一个开发服务器上有两个Oracle数据库 当我从DUAL中选择ORA_数据库_名称时;我明白了 第一个名称为DATABASE1.SERVER,第二个名称为DATABASE2.SERVER 当我使用execsqlconnect:userid时,标识为:pwd;在我的Pro*C程序中,它自动默认为DATABASE1 我能够通过使用EXEC SQL connect:userid显式连接到数据库2,该用户id由DB_NAME处的:pwd标识,使用:dbname,然而,如果我以这种方式连接,我将需要

我在同一个开发服务器上有两个Oracle数据库

当我从DUAL中选择ORA_数据库_名称时;我明白了

第一个名称为DATABASE1.SERVER,第二个名称为DATABASE2.SERVER

当我使用execsqlconnect:userid时,标识为:pwd;在我的Pro*C程序中,它自动默认为DATABASE1

我能够通过使用EXEC SQL connect:userid显式连接到数据库2,该用户id由DB_NAME处的:pwd标识,使用:dbname,然而,如果我以这种方式连接,我将需要在所有代码中更改使用execsql的每个地方,以DB_名称执行SQL。这是不可行的,因为有数百个Pro*C遗留文件需要更改

我当前的测试代码如下所示:

#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <pwd.h>

EXEC SQL INCLUDE sqlca;

void main()
{

EXEC SQL DECLARE DB_NAME DATABASE;

   char *userid = "user1";
   char *pwd = "password1";
   char *dbname = "DATABASE2";
   int c;

/*   EXEC SQL CONNECT :userid IDENTIFIED BY :pwd AT DB_NAME USING :dbname;*/  // When I execute      this line, I connect to DATABASE2 as desired
     EXEC SQL CONNECT :userid IDENTIFIED BY :pwd; //when I execute this line, I connect to the       default database, DATABASE1, which is not desired

   printf("Database returned: %i\n",sqlca.sqlcode);

 //This SQL is what I have to use when connecting to DATABASE2 explicitly
 /*  EXEC SQL AT DB_NAME select count(*)
     into c
     from table1;
 */

 //This SQL is the code I need to use, by connecting to DATABASE2 as the default database
   EXEC SQL select count(*)
   into c
   from table1;

   printf("count: %i\n",c);

}

我浏览了Oracle的文档,试图找出如何更改默认数据库连接,但我所发现的只是,它只说明存在默认连接,而不是如何更改它。

我不是专业的*C专家。但我希望在执行程序时,ORACLE_SID环境变量会驱动此操作。

我不是Pro*C专家,但我希望在运行程序时,ORACLE_SID环境变量会驱动默认操作。就是这样!非常感谢你。如果你愿意写这个作为回答,我会把它标记为接受。