【问题标题】:Inserting data into table returns error code 195向表中插入数据返回错误代码 195
【发布时间】:2013-04-11 12:48:00
【问题描述】:

这个问题源于我在this 中收到的建议,即更改我的错误代码定义并从那里开始。

我的问题:尝试向表中插入数据时,我收到SQLCODE 00195SQLSTATE S0001。如果我正确理解错误代码,一个非零正数表示查询成功但有警告。当我查看我的数据库时,没有插入任何数据。 我发现 two resources 将此错误代码描述为

不是公认的内置函数名

如您所见,我的表达式中使用的两个函数是TRIMSHA1。如果我同时省略它们,同样的错误仍然存​​在。

使用 SQLCODE 字段的PIC -(4)9 定义,正如我在另一篇文章中所建议的那样,返回-195 作为结果,也是一个我似乎找不到任何相关的错误代码。

我使用 SQL Server 2012 和 Percobol,后者利用 OpenCobol 编译器。

字段声明:

01 SQLCODE PIC 9(5).
01 SQLSTATE PIC X(5).

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.

SQL 查询:

EXEC SQL INSERT INTO dbo.Gebruikers
    VALUES ( TRIM( :LOGIN ), TRIM( :ACHTERNAAM ),
             TRIM( :EMAIL ), TRIM( :PROJECTCODE ),
             TRIM( :GEBR_TYPE ), TRIM( :VOORNAAM ),
             SHA1( TRIM( :WACHTWOORD ) ) )
END-EXEC

数据库:

连接字符串:

jdbc:sqlserver://localhost\SQLEXPRESS;databaseName=Groep31;user=Groep31;password=somepw

【问题讨论】:

    标签: sql sql-server cobol error-code


    【解决方案1】:

    Solution:SQL Server 不支持TRIM。使用RTRIM 修复了它。

    Solution:SQL Server 也不支持SHA1。使用HashBytes('SHA1', RTRIM(:WACHTWOORD)) 解决了这个问题(尽管现在存在一些编码问题)。

    【讨论】:

    • 好的,感谢您告诉我们。接受你自己的答案(至少在系统允许的时候)。您必须始终将 SQL 代码显示为带符号的字段,因为正负之间的区别非常重要,正如您所发现的那样。您还发现,在一个系统中有效的 SQL 不一定在另一个系统中有效,因此在从某个系统切换到其他系统时要小心。
    猜你喜欢
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多