Bonjour,
Dans le cadre d'un projet de migration d'une base de données sybase vers SQL Server je modifie des procédures stockées.
J'ai modifié une procédure pour la rendre compatible avec SQL Server et lors du lancement de la procédure, le message suivant apparaît: "Internal SQL Server error".
Quelqu'un peut il me dire à quoi correspond cette erreur?
Si celle ci est inévitable, comment modifier autrement ma procédure?
Pour vous situer le contexte:
procédure en sybase avant modification:
Lorsque j'ai compilé cette procédure j'ai eu une erreur avec la syntaxe sum(floor()) qui est interdite en sql server. J'ai donc modifié la procédure ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 SELECT @valconcorsup = @valconcorsup + IsNull(Sum(lccs_numintligsup*10),0) + ISNULL( Sum ( floor ( ( ISNULL( ( SELECT pte_commande.pcde_larprd WHERE lig_contrat_cli_sup.lccs_val002 = NULL OR lig_contrat_cli_sup.lccs_val002 > pte_commande.pcde_larprd) , lig_contrat_cli_sup.lccs_val002 - IsNull((Select 0.01 WHERE lig_contrat_cli_sup.lccs_codope IN ('7', '8')), 0) ) - ISNULL( ( SELECT lig_contrat_cli_sup.lccs_val001 + 0.01 WHERE lig_contrat_cli_sup.lccs_codope IN ('2', '7', '9')) , lig_contrat_cli_sup.lccs_val001 ) ) ) ,0) FROM lig_contrat_cli_sup,lig_contrat_cli, unt_dossier, pte_commande WHERE ...
(Merci à Frédéric BROUARD pour m'avoir aidé sur un problème similaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 SELECT @valconcorsup = @valconcorsup + IsNull(Sum(lccs_numintligsup*10),0) + ISNULL( (SELECT Sum(SOMME) FROM (SELECT ( floor ( ( ISNULL( (SELECT pte_commande.pcde_larprd WHERE lig_contrat_cli_sup.lccs_val002 = NULL OR lig_contrat_cli_sup.lccs_val002 > pte_commande.pcde_larprd) , lig_contrat_cli_sup.lccs_val002 - IsNull((Select 0.01 WHERE lig_contrat_cli_sup.lccs_codope IN ('7', '8')), 0) ) - ISNULL( (SELECT lig_contrat_cli_sup.lccs_val001 + 0.01 WHERE lig_contrat_cli_sup.lccs_codope IN ('2', '7', '9')) , lig_contrat_cli_sup.lccs_val001 ) ) ) ) AS SOMME ) VALAPP ) ,0 ) FROM lig_contrat_cli_sup,lig_contrat_cli, unt_dossier, pte_commande WHERE ...la semaine dernière)
Mais depuis j'ai la fameuse erreur interne à sql server.
Ce qui est bizarre c'est que si je retire le "+ IsNull(Sum(lccs_numintligsup*10),0)" du début ça marche, si je remplace la partie "ISNULL (...) - ISNULL (...)" par un nombre en dur (10.254 par exemple) ça marche également.
Merci d'avance pour vos propositions et du temps que vous me consacrez.
Vince.
Partager