Procedure stockée et delphi7
Bonjour a tous :D
Delphi 7
SQLServer 2000
Mon problème :
J'essaie de monter une procédure stockée qui a pour but d'incrémenté un compteur dans une table et d'aller récupérer ce numéro.
voici ma procédure stockée :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| CREATE PROCEDURE "SP_GENERATOR"
(
@TABLENOM D_NOM,
@AVALUE D_NUMID OUTPUT
)
as
begin
UPDATE TABLE_CPT SET CPT = CPT + 1 WHERE NOM=@TableNom;
DECLARE C CURSOR
FOR SELECT CPT
FROM TABLE_CPT
WHERE NOM = @TABLENOM;
OPEN C;
FETCH C INTO @AVALUE;
WHILE @@FETCH_STATUS = 0 BEGIN
FETCH C INTO @AVALUE;
END
CLOSE C;
DEALLOCATE C;
end;
GO |
Dans delphi voici mon code :
Code:
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
| function GetSQLGenerator(aTableName: string): LongInt;
var Q : TSQLStoredProc;
var p1 ,p2 : TPAram;
begin
result := -1
Q := nil;
with Q do
try
Q1 := CreateQueryFmt ('execute SP_GENERATOR %s, %d;',[QuotedSQL(aTableName), result]);
q := CreateStoredProc('SP_GENERATOR'); // Crée un StoredProc avec un SQLconnexion approprié
StoredProcName := 'SP_GENERATOR';
Params.Clear;
P1 := TParam.Create(Params, ptInput);
p1.Name := 'TABLENOM';
Q.ParamByname('TABLENOM').Value := aTableName;
P2 := TParam.Create(Q.Params, ptInputOutput);
p2.Name := 'VALUE';
Q.ParamByname('VALUE').Value := result;
q.ExecProc;
result := Q.ParamByname('VALUE').AsInteger;
finally
p1.Free;
p2.Free;
FreeAndNil(q);
end;
end; |
Mon problème est que ma procedure stockée ne renvoie jamais de valeur dans la variable @AVALUE qui est pourtant en OUPUT.
D'autre part dans l'analyseur de requet SQL , je teste ma procédure...
mais sans résultat convainquant.
Code :
Code:
1 2 3 4 5
| begin
declare @toto int;
execute SP_GENERATOR 'ARMATEUR' , @toto;
print @toto;
end; |
Ce script ne renvoie jamais rien , or si j'inclue dans ma procédure stockée
un print @AVALUE , le serveur SQL me renvoie la bonne valeur.
Après quelques jours de lutte , je suis perdu.
En espérant trouvé de l'aide de votre part. Merci d'avance