Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将数据插入表中会返回错误代码195_Sql_Sql Server_Cobol_Error Code - Fatal编程技术网

Sql 将数据插入表中会返回错误代码195

Sql 将数据插入表中会返回错误代码195,sql,sql-server,cobol,error-code,Sql,Sql Server,Cobol,Error Code,这个问题源于我在一次会议上收到的建议,即更改错误代码定义并从那里开始 我的问题:当尝试将数据插入表时,我收到SQLCODE 00195和SQLSTATE s001。如果我正确理解错误代码,则非零正数表示查询成功,但出现警告。当我查看数据库时,没有插入任何数据。 我已经找到了将此错误代码描述为 不是可识别的内置函数名 如您所见,我的表达式中使用的两个函数是TRIM和SHA1。如果我同时忽略这两个选项,则相同的错误仍然存在 正如我在另一篇文章中建议的那样,使用SQLCODE字段的PIC-(4)9定义

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

我的问题:当尝试将数据插入表时,我收到
SQLCODE 00195
SQLSTATE s001
。如果我正确理解错误代码,则非零正数表示查询成功,但出现警告。当我查看数据库时,没有插入任何数据。 我已经找到了将此错误代码描述为

不是可识别的内置函数名

如您所见,我的表达式中使用的两个函数是
TRIM
SHA1
。如果我同时忽略这两个选项,则相同的错误仍然存在

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

我使用SQLServer2012和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
TRIM
在SQL Server中不受支持。使用
RTRIM
修复了它


SHA1
在SQL Server中也不受支持。使用HashBytes('SHA1',RTRIM(:WACHTWOORD))修复了此问题(尽管目前存在一些编码问题)。

好的,感谢您让我们知道。接受你自己的答案(至少在系统允许的情况下)。您必须始终将SQL代码显示为带符号的字段,因为正如您所发现的,正字段和负字段之间的区别非常重要。您还发现,在一个系统中有效的SQL在另一个系统中不一定有效,所以在从某物切换到某物时要小心。