marc_dd
Messages postés61Date d'inscriptiondimanche 30 octobre 2005StatutMembreDernière intervention 2 juillet 2009
-
10 nov. 2006 à 16:41
cs_skweeky
Messages postés259Date d'inscriptionmercredi 3 mai 2006StatutMembreDernière intervention11 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)
cs_skweeky
Messages postés259Date d'inscriptionmercredi 3 mai 2006StatutMembreDernière intervention11 janvier 20108 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).