Получил странную проблему, создав небольшой сохраненный процесс, который должен выполнить несколько других сохраненных процедур, чтобы получить некоторые значения перед выполнением основного оператора выбора, см. Ниже,
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
Когда я запускаю этот сохраненный процесс, он возвращает мне два значения из двух процессов с этим процессом, но не фактическое значение выбора. Однако, когда я сам запускаю оператор select со значениями, которые возвращают вторичные хранимые процедуры, он возвращает правильные данные.
Есть идеи, что происходит, оператор SELECT выполняется перед двумя вторичными сохраненными процессами, поэтому оператор SELECT не имеет правильных значений?
Запуск в SQL 2005