使用 rmcobol 中的 InstantSql 在 postgres 中创建/删除表

问题描述 投票:0回答:1

使用下面的文档,我能够使用 rm/cobol 对 Linux 中的 Postgres 数据库执行选择/更新/插入。

https://www.microfocus.com/documentation/rm-cobol/1214/ISQLhelp/InstantSQLTableOfContents.htm

但是,我无法使用 InstantSql 创建表或删除表。以下是我看到的错误。我在上面的文档中看不到任何示例。

放下桌子

准备查询

MOVE "drop table persons1"
  TO sql-QrySQL

SQL PREPARE QUERY sql-QueryHandle,
    sql-ConnectionHandle,
    sql-QrySQL.

IF NOT sql-OK
  display "UNSUCCESFUL PREPARE!!!"
  PERFORM WITH TEST AFTER UNTIL sql-EndOfData
    SQL DESCRIBE ERROR
    sql-Error-Description
    IF NOT sql-EndOfData
      PERFORM DISPLAY-ERROR-INFO
    END-IF
  END-PERFORM
  GO TO Z
END-IF

开始查询

SQL START QUERY sql-QueryHandle.
IF NOT sql-OK
  display "UNSUCCESFUL START!!!"
  PERFORM WITH TEST AFTER UNTIL sql-EndOfData
    SQL DESCRIBE ERROR
    sql-Error-Description
    IF NOT sql-EndOfData
      PERFORM DISPLAY-ERROR-INFO
    END-IF
  END-PERFORM
  GO TO Z
END-IF

编译成功。

执行结果

UNSUCCESFUL START!!!
Err Msg ERROR: syntax error at or near "drop" at character 29;
Error while executing the query

Err TypO
Err statement SQLExecute
ErrsqlSate HY000
err no {00007

创建表格

准备查询

MOVE "CREATE TABLE Persn2(PersonID int)"
  TO sql-QrySQL

SQL PREPARE QUERY sql-QueryHandle,
    sql-ConnectionHandle,
    sql-QrySQL.

执行

UNSUCCESFUL START!!!
Err Msg ERROR: syntax error at or near "create" at character 28;
Error while executing the query

Err TypO
Err statement SQLExecute
ErrsqlSate HY000
err no {00007

其他选择

但是我可以直接对 Linux 中的 postgres 数据库执行这些操作。

我也尝试过 grant 语句,但 grant 也显示与上面相同的错误。 (我尝试在不带引号的情况下给出声明,也可以使用单引号、双引号)

 Move "grant create on database ttrac to 'postgres';"
                  to sql-QrySQL


           SQL PREPARE QUERY sql-QueryHandle,
               sql-ConnectionHandle,
               sql-QrySQL.
postgresql cobol
1个回答
0
投票

错误出现在

MOVE
语句中。我想是这样。 对所有
MOVE
声明

尝试类似的方法
MOVE 'DROP TABLE "persons1"' TO sql-QrySQL

我刚刚将

'
添加到
SQL

无论是否存在问题,请恢复

© www.soinside.com 2019 - 2024. All rights reserved.