【发布时间】:2013-04-15 18:10:15
【问题描述】:
首先:我的代码的最大部分是在几周前工作的。与此同时,我们已经从 MySQL 服务器切换到 SQL 服务器,并且我们对架构设计进行了一些更改。
我使用 Percobol,据我所知,它利用了 OpenCobol 编译器。
PERFORM 2010-GEBRUIKER-INSERT
PERFORM 2020-GEBRUIKER-JOINTABLE
2010-GEBRUIKER-INSERT.
MOVE "GEBRUIKER" TO GEBR_TYPE
EXEC SQL INSERT INTO Gebruikers
VALUES ( TRIM( :LOGIN ), TRIM( :ACHTERNAAM ),
TRIM( :EMAIL ), TRIM( :PROJECTCODE ),
TRIM( :GEBR_TYPE ), TRIM( :VOORNAAM ),
SHA1( TRIM( :WACHTWOORD ) ) )
END-EXEC
.
2020-GEBRUIKER-JOINTABLE.
EXEC SQL INSERT INTO LeertrajectenGebruikersJoin
VALUES (TRIM( :PROJECTCODE ), TRIM( :LOGIN))
END-EXEC
.
而这些表的数据库设计如下所示:
当我在2010 中显示INSERT 语句之前的值时,一切都正确显示。当我尝试在INSERT 之后显示它们时,它们没有显示出来。
抛出的错误(在我的记录器中被捕获)告诉我错误代码00q。我一直在做一些搜索,但似乎无法找到它的含义。更重要的是,据我所知,以00 开头的代码应该表明一切正常。
使用的字段是这样声明的,并从 CSV 文件中填充:
01 WS-INPUT.
05 ACHTERNAAM PIC X(25) VALUE SPACES.
05 VOORNAAM PIC X(15) VALUE SPACES.
05 EMAIL PIC X(50) VALUE SPACES.
05 LOGIN PIC X(15) VALUE SPACES.
05 WACHTWOORD PIC X(11) VALUE SPACES.
05 GEBR_TYPE PIC X(20) VALUE SPACES.
05 PROJECTCODE PIC X(10) VALUE SPACES.
我忽略了什么可能会返回此错误? 同样重要的是:当我更改我的 JDBC 字符串或输入文件字符串时,我的记录器会通知我连接错误。因此,我假设连接和数据读取都按预期工作。
【问题讨论】:
-
定义一个 PIC -(4)9 字段。将您的 sql 错误代码移至该位置,然后打印/显示该代码。我想你会发现 q 是一个负数,你可以在你的 sql 文档中跟踪它。
-
00q 在 Open-Cobol 分区十进制(以及许多其他 Ascii Cobols)中为 -1,搜索错误代码 -1。正如比尔所说,您应该将其移至 ---9 pic 字段。
-
好的,我今天晚些时候会看看这个,看看它对我有什么好处。干杯!
-
您还说 WS-INPUT 是“CSV 文件”。它可能来自 CSV,但这不能直接表示 CSV,因为所有字段的长度都是固定的,并且每个字段之间没有分隔符。
标签: sql-server cobol sql-insert