标签: embedded-sql

Pro-C中的SQL查询失败,错误:02115

我得到了一些奇怪的Pro-C程序行为,如下所示:

#define BGHCPY_TO_ORA(dest, source) \
{ \
(void)strcpy((void*)(dest).arr, (void*)(source)); \
(dest).len = strlen((const char *)(dest).arr); \
}
#define BGHCPY_FROM_ORA(dest, source) \
{ \
(void)memcpy((void*)(dest), (void*)(source).arr, (size_t)(source).len); \
(dest)[(source).len] = '\0'; \
} 

long fnSQLMarkProcessed (char *pszRowId, char *pszMarker)
{
  BGHCPY_TO_ORA (O_rowid_stack,    pszRowId);
  BGHCPY_TO_ORA (O_cust_processed, pszMarker);

  EXEC SQL
       UPDATE  document_all
          SET  processed_by_bgh = :O_cust_processed
        WHERE  rowid = :O_rowid_stack;

  return (sqlca.sqlcode);
}
Run Code Online (Sandbox Code Playgroud)

传递给上面函数的输入参数值是

pszRowId = [AAAF1lAAIAABOoRAAB], pszMarker=X
Run Code Online (Sandbox Code Playgroud)

查询返回错误代码:02115,并显示以下消息:

SQL Error:02115 Code interpretation problem -- check COMMON_NAME usage
Run Code Online (Sandbox Code Playgroud)

我使用Oracle作为后端数据库.

任何人都可以向我提供有关此查询失败的可能原因的信息吗?

任何帮助都非常感谢.

PRO-C编译期间使用的标志定义如下:

------/u01/app/oracle/product/8.1.6/ORACLE_HOME/bin/proc …
Run Code Online (Sandbox Code Playgroud)

c sql embedded-sql oracle-pro-c

9
推荐指数
1
解决办法
504
查看次数

将记录从Oracle数组移动到Cobol

如何将记录从oracle移动到Cobol阵列?当我移动一个字段时,一切都按预期工作.当我尝试在Oracle VARRAY中移动记录时,我无法使其工作.PRO*COBOL预编译器给出以下错误消息:

Error at line 137, column 12 in file ESF3.ordbso07.PCO
            EXEC SQL EXECUTE      
 ...........1
 PCB-S-00576, PLS-382: expression is of wrong type
 Error at line 137, column 12 in file ESF3.ordbso07.PCO
            EXEC SQL EXECUTE      
 ...........1
 PCB-S-00576, PLS-0: Statement ignored
Run Code Online (Sandbox Code Playgroud)

Oracle类型:

TYPE QDELSSRD_arr IS VARRAY(30) OF QDELSSRD_typ;

TYPE SODLSSRD_typ IS RECORD ( -- DBSO07 SOK
    QDELSSRD             QDELSSRD_arr -- 30 x QDELSSRD_typ

OC is SODLSSRD_typ;
TYPE QDELSSRD_typ IS RECORD (
    ENAMN                arbetssokande.efternamn%type, -- VARCHAR2(30 CHAR)
    FNAMN                arbetssokande.fornamn%type, -- VARCHAR2(20 CHAR)
);
Run Code Online (Sandbox Code Playgroud)

COBOL …

oracle cobol embedded-sql procobol

7
推荐指数
1
解决办法
766
查看次数

ESQL是否在工业中使用?

我正在学习数据库课程,我必须编写一个命令行应用程序.教授希望我们编写一个ESQL(嵌入式SQL)应用程序.

我觉得这种技术是折旧的.

我们必须使用oracle预编译器来翻译c ++中的esql代码.这种应用程序看起来很糟糕.

php应用程序也可以正常运行,但是他们可能希望命令行应用程序更快地进行分级(使用输入源进行单元测试).您认为,Embed SQL是业内使用的,是否值得请教教授做一个java应用程序?还有其他技术更合适吗?

database oracle embedded-sql

6
推荐指数
1
解决办法
1070
查看次数

在ILE RPG中检查sql发现条件的正确方法是什么?

在RPG中使用嵌入式SQL时,通常会使用游标和dow-loop来处理结果中的所有行.循环中的条件以某种方式依赖于SQLCOD和/或SQLSTTSQLRPGLE程序中的一些全局可用变量?

但检查这些值的正确方法是什么?有人建议SQLCOD = 0别人not (SQLCOD = +100 or SQLSTT = '02000').一个失败的所有警告,另一个没有失败的一些错误,所以我不满足.

为了说明我对一些代码的处理:

Pmain             B
D                 PI
Dmy_ds          E DS                  extname(SOME_TABLE)
D                                     qualified
 /free
  exec sql
    DECLARE cur CURSOR FOR
      SELECT *
      FROM some_table;
  exec sql 
    OPEN cur;
  exec sql
    FETCH cur
     INTO :my_ds;
  dow sql_found();
      exec sql
        FETCH cur
         INTO :my_ds;
  enddo;
  exec sql
    CLOSE cur;
 /end-free
Pmain             E


Psql_found        B
D                 PI              N
 /free
  // insert return statement here... …
Run Code Online (Sandbox Code Playgroud)

rpgle embedded-sql db2-400

6
推荐指数
1
解决办法
1万
查看次数

PostgreSQL游标重新打开GnuCOBOL中的错误

我试图在GnuCOBOL上从Oracle迁移到PostgreSQL.我有一段使用游标的代码,需要多次打开游标.但是,当我再次尝试打开光标时,我收到错误ERROR: cursor "fetchtbl_c1" already exists

        IDENTIFICATION              DIVISION.
        PROGRAM-ID.                 FETCHTBL.

        DATA                        DIVISION.
        WORKING-STORAGE             SECTION.
        01  D-SOC-REC.
            05  D-SOC-NO-1          PIC  X(3).
            05  FILLER              PIC  X.
            05  D-SOC-NO-2          PIC  X(3).

        EXEC SQL BEGIN DECLARE SECTION END-EXEC.
        01  USERNAME                PIC  X(30) VALUE SPACE.
        01  SOC-REC-VARS.
            05  SOC-NO-1            PIC X(3).
            05  SOC-NO-2            PIC X(3).
        EXEC SQL END DECLARE SECTION END-EXEC.

        EXEC SQL INCLUDE SQLCA END-EXEC.
        PROCEDURE                   DIVISION.
        MAIN-RTN.
            MOVE  SPACE             TO   USERNAME.
            EXEC SQL
                CONNECT :USERNAME
            END-EXEC.
            IF  SQLCODE NOT = ZERO DISPLAY "ERROR …
Run Code Online (Sandbox Code Playgroud)

postgresql cobol gnucobol embedded-sql

5
推荐指数
1
解决办法
329
查看次数

SQL - 删除和子查询

以下是我写的一个sql查询,用于删除放置表中的所有记录,其中placement.op_number=返回记录的列表.

子查询单独工作正常,只返回OP_NUMBER列(有两行).

我得到的错误是:

子查询最多可以返回一条记录

DELETE
FROM PLACEMENT
WHERE PLACEMENT.OP_NUMBER = (SELECT OP_NUMBER
                             FROM Opening
                             WHERE opening.qual_code = "SEC-45");
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

sql relational-database embedded-sql

2
推荐指数
1
解决办法
5614
查看次数

如何让RPGLE程序将SQL警告和错误写入作业日志?

好像我记得编写一个使用嵌入式SQL的RPG程序,只要发生SQL警告或错误,它就会向交互式用户作业日志写入消息.我没有明确写出来; 它默认记录.

我现在写的程序没有进行此日志记录,虽然我知道我可以引起类似警告01003和错误02000,并使用SQLState变量读取它们.

我不认为我想象这种行为.是否有我忘记设置的H spec关键字,我调用程序的方式(使用CALL交互式),我编写SELECT INTO语句的方式(静态而不是动态)?我对其他想法感到茫然.

rpgle embedded-sql db2-400 ibm-midrange

0
推荐指数
1
解决办法
121
查看次数