vblanco
Messages postés3Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention 2 août 2007
-
2 août 2007 à 09:56
rob2004
Messages postés1Date d'inscriptionmardi 30 mars 2010StatutMembreDernière intervention17 août 2010
-
17 août 2010 à 17:33
vblanco
Messages postés3Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention 2 août 2007 2 août 2007 à 10:01
Bonjour,
Je travaille actuellement sur un programme en Visual C++ 6.0 qui permet de remplir une base de données (MSDE2000) en exécutant une procédure stockée. Les tables sont toujours correctement mises à jour mais pas le paramètre de sortie (@retour) ! Lorsque la procédure doit renvoyer le paramètre de retour égal à 10 (on est passé dans la structure if), la variable C++ iRetour reste à sa valeur initiale. Le paramètre se sortie fonctionne correctement si j'enlève l'instruction INSERT INTO de la structure if !
L'ensemble des fonctions ODBC utilisées dans le programme C++ renvoient SQL_SUCCESS et lorsque je lance la procédure stockée directement sous SQL Server tout se passe bien. Bref, j'en perds mon latin (ou plutôt mon C++).
CREATE PROCEDURE AddReport (@data1 int, @data2 int,@data3 int,@data4 int,@data5 int,@retour int OUTPUT)
AS
SET @retour = 0
if not exists(SELECT * from table_1 WHERE Data_Code=@data1)
BEGIN
SET @retour = 10
INSERT INTO table_1(Data_Code, Data_Text) VALUES (@data1, 'Value of data1 <' + ltrim(str(@data1)) + '>')
END
if not exists(SELECT * from table_2 WHERE Data_Code=@data2)
BEGIN
SET @retour = 10
INSERT INTO table_2(Data_Code, Data_Text) VALUES (@data2, 'Value of data2 <' + ltrim(str(@data2)) + '>')
END
INSERT INTO table_3 (Colonne_1, Colonne_2, Colonne_3)
VALUES (@data3, @data4, @data5)
GO