Измените базу данных по умолчанию в Oracle Pro * C

#c #oracle

#c #Oracle

Вопрос:

У меня есть две базы данных Oracle на одном сервере разработки.

Когда я это делаю SELECT ORA_DATABASE_NAME FROM DUAL; , я получаю

БАЗА ДАННЫХ 1.SERVER в качестве имени для первого и DATABASE2.SERVER в качестве имени для второго.

Когда я использую EXEC SQL CONNECT :userid IDENTIFIED BY :pwd; в своей программе Pro * C, по умолчанию автоматически устанавливается значение DATABASE1.

Я могу явно подключиться к DATABASE2 с помощью use EXEC SQL CONNECT :userid IDENTIFIED BY :pwd AT DB_NAME USING :dbname; , однако, если я подключусь таким образом, мне нужно будет изменить каждое место, которое я использую EXEC SQL , на EXEC SQL AT DB_NAME протяжении всего кода. Это невозможно, поскольку существуют сотни устаревших файлов 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: %in",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: %in",c);

}
  

Я просмотрел документацию Oracle, пытаясь выяснить, как изменить подключение к базе данных по умолчанию, но все, что я нашел, это это, в котором указано только, что существует соединение по умолчанию, а не как его изменить.

Комментарии:

1. Я не эксперт в области Pro * C, но я ожидаю, что значение по умолчанию будет определяться ORACLE_SID переменной среды при запуске программы.

2. Вот и все! Большое вам спасибо. Если вы хотите записать это как ответ, я пометлю его как принятый.

Ответ №1:

Я не Pro*C эксперт. Но я бы ожидал, что это будет зависеть от ORACLE_SID переменной среды при выполнении программы.