使用 Proc 代码连接到两个不同的数据库
Connecting to two diffrent data bases using Pro* C code
我们如何使用 Pro* C 代码连接到两个不同的数据库。我在 tnsnames.ora 文件中有条目。默认情况下,它使用 EXEC SQL CONNECT 语句连接到其中一个数据库,我不确定它是如何连接的。我想连接到另一个在 tnsnames.ora 文件中有条目的数据库。我正在使用 OpenVMS OS.
维杰·库马尔
下面概述了我在通行证中为实现这一目标所做的工作。
默认连接
如果您的代码中没有 CONNECT 语句,Oracle 将在遇到第一个 SQL 语句时执行自动连接。它使用设置数据库的人配置的凭据信息。
多个连接
要连接到 Pro C 中的多个数据库,您必须显式连接到代码引用的所有数据库。
下面概述了我在通行证中完成的 3 个步骤:
- 声明一个数据库别名。这将用于参考
连接。
- 显式连接到数据库并为连接分配别名。这是通过在 CONNECT 语句中包含一个 AT 子句来完成的。
- 在接下来的 SQL 语句中,通过包含 AT 子句来引用连接。
示例代码:
/*
* Declare the database aliases
*/
EXEC SQL DECLARE DB1 DATABASE;
EXEC SQL DECLARE DB2 DATABASE;
/*
* Explicitly connect to the database. Include an AT clause to name the connection
*/
EXEC SQL CONNECT :db1_uid IDENTIFIED BY :db1_pwd
AT DB1;
EXEC SQL CONNECT :db2_uid IDENTIFIED BY :db2_pwd
AT DB2;
/*
* In the SQL statements, reference the connection by including the AT clause.
*/
EXEC SQL AT DB1 SELECT COL1 INTO :var1
FROM TABLE_1
WHERE COL2 = 'some_value';
EXEC SQL AT DB2 SELECT COLUMN1 INTO :var2
FROM TABLE_2
WHERE COLUMN2 = 'some_value';
EXEC SQL AT DB1 COMMIT WORK RELEASE;
EXEC SQL AT DB2 COMMIT WORK RELEASE;
注意事项:
DB1 和 DB2 是程序员定义的别名。
由变量 db1_pwd 和 db2_pwd 表示的密码必须是
变量而不是硬编码值。
存储在变量 db1_uid 和 db1_uid2 中的用户名值采用以下格式:username@DatabaseName
注意我相信还有其他方法可以完成此操作。这就是我成功上班的方法。
中找到有关连接到数据库的更多信息
我们如何使用 Pro* C 代码连接到两个不同的数据库。我在 tnsnames.ora 文件中有条目。默认情况下,它使用 EXEC SQL CONNECT 语句连接到其中一个数据库,我不确定它是如何连接的。我想连接到另一个在 tnsnames.ora 文件中有条目的数据库。我正在使用 OpenVMS OS.
维杰·库马尔
下面概述了我在通行证中为实现这一目标所做的工作。
默认连接
如果您的代码中没有 CONNECT 语句,Oracle 将在遇到第一个 SQL 语句时执行自动连接。它使用设置数据库的人配置的凭据信息。
多个连接
要连接到 Pro C 中的多个数据库,您必须显式连接到代码引用的所有数据库。
下面概述了我在通行证中完成的 3 个步骤:
- 声明一个数据库别名。这将用于参考 连接。
- 显式连接到数据库并为连接分配别名。这是通过在 CONNECT 语句中包含一个 AT 子句来完成的。
- 在接下来的 SQL 语句中,通过包含 AT 子句来引用连接。
示例代码:
/*
* Declare the database aliases
*/
EXEC SQL DECLARE DB1 DATABASE;
EXEC SQL DECLARE DB2 DATABASE;
/*
* Explicitly connect to the database. Include an AT clause to name the connection
*/
EXEC SQL CONNECT :db1_uid IDENTIFIED BY :db1_pwd
AT DB1;
EXEC SQL CONNECT :db2_uid IDENTIFIED BY :db2_pwd
AT DB2;
/*
* In the SQL statements, reference the connection by including the AT clause.
*/
EXEC SQL AT DB1 SELECT COL1 INTO :var1
FROM TABLE_1
WHERE COL2 = 'some_value';
EXEC SQL AT DB2 SELECT COLUMN1 INTO :var2
FROM TABLE_2
WHERE COLUMN2 = 'some_value';
EXEC SQL AT DB1 COMMIT WORK RELEASE;
EXEC SQL AT DB2 COMMIT WORK RELEASE;
注意事项:
DB1 和 DB2 是程序员定义的别名。
由变量 db1_pwd 和 db2_pwd 表示的密码必须是 变量而不是硬编码值。
存储在变量 db1_uid 和 db1_uid2 中的用户名值采用以下格式:username@DatabaseName
注意我相信还有其他方法可以完成此操作。这就是我成功上班的方法。
中找到有关连接到数据库的更多信息