使用Pro * C代码

时间:2018-01-22 05:44:16

标签: database database-connection proc openvms

我们如何使用Pro * C代码连接到两个不同的数据库。我在tnsnames.ora文件中有条目。默认情况下,它使用EXEC SQL CONNECT语句连接到其中一个数据库,我不确定它是如何连接的。我想连接到另一个在tnsnames.ora文件中有条目的数据库。我正在使用OpenVMS OS。

1 个答案:

答案 0 :(得分:0)

Vijay Kumar

下面概述了我在通过过程中为完成此操作所做的事情。

默认连接

如果代码中没有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

请注意,我相信还有其他方法可以完成此操作。这是我成功上班的方法。

您可以在Oracle Pro *C/C++ Programmer’s Guide.

中找到有关连接数据库的更多信息。