更改Oracle Pro*C中的默认数据库
我在同一个开发服务器上有两个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遗留文件需要更改 我当前的测试代码如下所示:更改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,然而,如果我以这种方式连接,我将需要
#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环境变量会驱动默认操作。就是这样!非常感谢你。如果你愿意写这个作为回答,我会把它标记为接受。