Cette question résulte des conseils que j'ai reçus dans celui- ci, à savoir la modification de ma définition de code d'erreur et d'aller de là.
Mon problème: en essayant d'insert des données dans une table, je reçois SQLCODE 00195
et SQLSTATE S0001
. Si je comprends correctement les codes d'erreur, un nombre positif non nul signifie que la requête a réussi mais avec des avertissements. Quand je regarde ma database, aucune donnée n'a été insérée. J'ai trouvé deux ressources qui décrivent ce code d'erreur comme
n'est pas un nom de fonction embedded reconnu
Comme vous le verrez, les deux fonctions utilisées dans mon expression sont TRIM
et SHA1
. Si je les omets tous les deux, la même erreur persiste.
En utilisant la définition PIC -(4)9
du champ SQLCODE, comme suggéré dans mon autre article, renvoie -195
comme résultat, aussi un code d'erreur que je n'arrive pas à find.
J'utilise SQL Server 2012 et Percobol, qui utilise le compilateur OpenCobol.
Déclaration de champs:
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.
Requête 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
Base de données:
Chaîne de connection:
jdbc:sqlserver://localhost\SQLEXPRESS;databaseName=Groep31;user=Groep31;password=somepw
Solution : TRIM
n'est pas pris en charge dans SQL Server. L'utilisation de RTRIM
corrigé.
Solution : SHA1
n'est pas pris en charge dans SQL Server. L'utilisation de HashBytes('SHA1', RTRIM(:WACHTWOORD))
corrigé ceci (bien qu'il y ait quelques problèmes d'enencoding en ce moment).