Bonjour,
J'ai un problème assez étonnant avec une procédure stockée SQL-Server appelée depuis oracle via un dblink.
Les données du problème :
Je crée une table TEST :
Je crée une procédure qui me renvoie la table TEST
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
Tout ça fonctionne bien sûr très bien sous SQL-Server
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Là où c'est moins drôle c'est quand j'appelle la procédure depuis Oracle via un dblink :
Si j'appelle la procédure en lui passant aParam=0 elle me renvoie bien "-1" comme prévu
Si je l'appelle en lui passant 1 j'ai le message d'erreur :
Je modifie la procédure stockée en inversant simplement le IF:[Generic Connectivity Using ODBC][Microsoft][ODBC SQL Server Driver]
Erreur sur la ligne[Microsoft][ODBC SQL Server Driver]
Troncation à droite de la chaîne de données
Là plus de problème, ça fonctionne dans tous les cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sinon j'ai essayé ça qui fonctionne également dans tous les cas :
Si si je vous assure je ne fume pas et d'ailleurs je n'ai pas de moquette dans le bureau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Il faut que le nombre de caractères dans le "if 1=2 select 'xxxxxxxxxxxxxx'" soit plus grand que la plus grande chaine de la table TEST.
Quelqu'un peut m'expliquer le fonctionnement de SQL-Server ? J'ai l'impression que le code est interpreté au runtime et qu'il se base sur le dernier select pour déterminer la taille du buffer (d'où le message d'erreur "troncation à droite") ?
Il est difficile de livrer un code "sérieux" en expliquant qu'il ne faut surtout pas inverser le sens des "if else" ou en ajoutant des "if 1=2" !
Merci.
Pour info j'ai mis le code de la procédure oracle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
29
30

 

 
		
		 
         
 

 
			
			

 
   


 Problème avec procédure stockée appelée via dblink
 Problème avec procédure stockée appelée via dblink
				 Répondre avec citation
  Répondre avec citation


 
 
Partager