Vous avez un problème étrange a créé un peu proc stocké qui doivent exécuter deux autres procs stockées pour obtenir des valeurs avant d'exécuter l'instruction select principal voir ci-dessous,SQL Stored Proc exécution Sélectionnez avant gettting valeurs d'autres procs
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_get_ApplicationUserServiceRoles]
@UserId int,
@ApplicationName varchar(50),
@ServiceName varchar(50)
AS
BEGIN
-----------------------------------------
SET NOCOUNT ON
-----------------------------------------
DECLARE @ApplicationId INT
exec @ApplicationId = dbo.usp_get_AppIdFromName @ApplicationName
DECLARE @ServiceId INT
exec @ServiceId = dbo.usp_get_ServiceIdFromName @ServiceName
SELECT
[RoleName]
FROM
[ServiceRoles] s
INNER JOIN
[ApplicationUserServiceRoles] r
ON
s.ServiceRoleId = r.ServiceRoleId
INNER JOIN
[ApplicationServices] p
ON
s.ServiceId = p.ServiceId
WHERE
r.UserId = @UserID
AND
r.ApplicationId = @ApplicationId
AND
s.ServiceId = @ServiceId
END
Lorsque j'exécute ce proc stocké, il me renvoie les deux valeurs des deux procs avec ce proc mais pas la valeur de sélection réelle. Toutefois, lorsque j'exécute l'instruction select seule avec les valeurs renvoyées par le procs secondaire, elle renvoie les données correctes.
Une idée de ce qui se passe, est l'instruction select qui s'exécute avant les deux processus stockés secondaires afin que l'instruction select n'ait pas les bonnes valeurs?
Exécution dans SQL 2005
Merci pour votre aide j'ai transformé les deux sub procs en fonctions et ça fonctionne bien, merci encore. – Jon
Pas tout à fait vrai, un proc stocké renvoie un entier. Idéal pour les états d'erreur de retour, etc., mais peut également renvoyer une valeur entière de la même manière qu'une fonction. Utile où la 'fonction' doit écrire dans la base de données. – MatBailie