Probleme stored dynamique

marc_dd Messages postés 61 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 2 juillet 2009 - 10 nov. 2006 à 16:41
cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 - 19 nov. 2006 à 14:16
bonjour à tous

Voilà je voudrais faire une stored dynamique mais je n' arrive pas à retrouver mes paramètre 
le code sera plus parlant

voilà le code :
ALTER

PROCEDURE [dbo]
.[CheckingPass]@login

AS
NVARCHAR(50
),@pass

AS
NVARCHAR(50
),@role

AS
nvarchar(50
)AS

BEGIN

declare

@sqlstring1
nvarchar(50
)declare

@id
as
intset

@sqlstring1
=
(
select idpersonne
from personne

where [login]
=@login
)set

@id
=
(execute
sp_executesql @sqlstring1
)                  'ici je voudrais récuperer mon id pour le réutiliser plus bas  il me dit une erreur ici declare

@sqlstring
nvarchar(200
)print

@id
set

@sqlstring
=
('select count(idpersonne) from '
+ @role
+' where statut 1 and idpersonne set @id = ' +
 @id )            je narrive pas à le récupérer

print @sqlstring
exec

sp_executesql @sqlstring
END

Voilà si quelqu'un pouvait m'aider ca fait toute l'après midi que je suis sur cette stored de ****
ps je suis en sql2005 (je pense pas que ca change grand chose mais on ne sait jamais)

merci d'avance
Marc

1 réponse

cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 8
19 nov. 2006 à 14:16
Un exemple récupéré dans l'aide en ligne :
USE

AdventureWorks
;GO

DECLARE

@SQLString
nvarchar(500
);DECLARE

@ParmDefinition
nvarchar(500
);DECLARE

@SalesOrderNumber
nvarchar(25
);DECLARE

@IntVariable
int;SET

@SQLString
= N
'SELECT @SalesOrderOUT = MAX(SalesOrderNumber)FROM Sales.SalesOrderHeader

WHERE CustomerID = @CustomerID'

;SET

@ParmDefinition
= N
'@CustomerID int,@SalesOrderOUT nvarchar(25) OUTPUT'

;SET

@IntVariable
= 22276
;EXECUTE

sp_executesql@SQLString

,@ParmDefinition

,@CustomerID

= @IntVariable
,@SalesOrderOUT

= @SalesOrderNumber
OUTPUT;-- This SELECT statement returns the value of the OUTPUT parameter.

SELECT

@SalesOrderNumber
;-- This SELECT statement uses the value of the OUTPUT parameter in

-- the WHERE clause.

SELECT

OrderDate
, TotalDue
FROM

Sales
.SalesOrderHeader
WHERE

SalesOrderNumber
= @SalesOrderNumber
;On ne peut pas faire de :
@x = EXEC
dans SQL Server

Pour cette raison on indique la liste des paramètres en 2ème argument de sp_executesql et on met bien le mot clef OUTPUT pour indiquer que l'on à faire à un paramètre de sortie (dont on souhaite récuperer la valeur).

Cordialement,

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
0
Rejoignez-nous