2013-04-18 25 views
1

這個問題的結果來自我在this之一收到的建議,即更改我的錯誤代碼定義並從那裏開始。在表格中插入數據返回錯誤代碼195

我的問題:當試圖插入數據到表中時,我收到SQLCODE 00195SQLSTATE S0001。如果我正確理解錯誤代碼,則正數非零數字表示查詢成功,但帶有警告。當我查看我的數據庫時,沒有插入任何數據。 我發現tworesources其描述這個錯誤代碼爲

是無法識別的內置函數名稱

正如你所看到的,在我的表達式中使用的兩個功能是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 

數據庫:

Table overview

連接字符串:

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

回答

2

SolutionTRIM在SQL Server中不受支持。使用RTRIM修復它。

SolutionSHA1在SQL Server中不受支持。使用HashBytes('SHA1', RTRIM(:WACHTWOORD))解決了這個問題(雖然現在有一些編碼問題)。

+2

好的,謝謝你讓我們知道。接受你自己的答案(至少在系統允許你的時候)。您必須始終將SQL代碼顯示爲帶符號的字段,正如您發現的那樣,正面和負面之間的區別非常重要。你也發現在一個系統中有效的SQL不一定在另一個系統中有效,所以在從某種東西切換到某些東西時要小心。 –