从 ABL 连接到 Progress Openedge 数据库

Connecting to a Progress Openedge database from ABL

如果我在进度编辑器中 运行 这段代码工作正常。如果我将其另存为 .p 文件并单击右键 "RUN",它会给我一个数据库不存在的错误。我知道也许我应该插入一些代码来连接到数据库。

有人知道我应该使用什么语句吗?

DEF STREAM st1.
OUTPUT STREAM st1 TO c:\temp\teste.csv.

FOR EACH bdName.table NO-LOCK:
   PUT STREAM st1 UNFORMATTED bdName.Table.attr ";" SKIP.
END.
OUTPUT STREAM st1 CLOSE.

正如您所说,您需要连接到您的数据库。这可以通过几种不同的方式完成。

通过 CONNECT 语句连接

您可以使用 CONNECT 语句连接数据库。基本上:

CONNECT <database name> [options]

这是一个简单的语句,它连接到一个名为 "database" 运行ning 的本地数据库,端口号为 43210。

CONNECT database.db -H localhost -S 43210.

-H 指定运行连接数据库的主机。这可以是名称或 IP 地址。 -S 指定数据库用于连接的端口(或服务)。这可以是数字或服务名称(在这种情况下,必须在 /etc/services 或类似的格式中指定)

但是您不能连接到数据库并在同一个程序中使用它的表。相反,您需要在一个程序中连接,然后 运行 第二个程序中的逻辑

/* runProgram.p */
CONNECT database -H dbserver -S 29000.
RUN program.p.
DISCONNECT database.

/* program.p */
FOR EACH exampletable NO-LOCK:
  DISPLAY exampletable.
END.

通过命令行参数连接

您可以在启动命令中简单地添加参数,以便新会话从一开始就连接到一个或多个数据库。

Windows:

prowin32.exe -db mydatabase -H localhost -S 7777

看下面的选项(参数文件)再做这个

通过命令行参数连接(使用参数文件)

另一种选择是使用参数文件,通常扩展名为 .pf。

然后你将不得不修改你开始会话的方式,而不是仅仅做 prowin32.exe(如果你在 windows)你添加 -pf 参数:

prowin32.exe -pf myparameterfile.pf

参数文件将包含您所有的连接参数:

# myparameterfile.pf 
-db database -S localhost -P 12345

井号 (#) 用于参数文件中的注释。

在 Linux/Unix 你会 运行:

pro -pf myparameterfile.pf

您还可以针对同一会话中使用的不同数据库混合使用不同的方法。