На нашем SQL Server (версия 10.0.1600) у меня есть хранимая процедура, которую я написал.Сохраненная процедура не запускает последнюю команду
Это не ошибка, и она возвращает правильные значения после внесения вставки в базе данных.
Однако последняя команда spSendEventNotificationEmail
(которая отправляет уведомления по электронной почте) не запускается.
Я могу запустить сценарий spSendEventNotificationEmail
вручную, используя те же данные, и уведомления появятся, поэтому я знаю, что это работает.
Есть ли что-то не так с тем, как я называю это в своей хранимой процедуре?
[dbo].[spUpdateRequest](@packetID int, @statusID int output, @empID int, @mtf nVarChar(50)) AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @id int
SET @id=-1
-- Insert statements for procedure here
SELECT A.ID, PacketID, StatusID
INTO #act FROM Action A JOIN Request R ON (R.ID=A.RequestID)
WHERE ([email protected]) AND ([email protected])
IF ((SELECT COUNT(ID) FROM #act)=0) BEGIN -- this statusID has not been entered. Continue
SELECT ID, MTF
INTO #req FROM Request
WHERE [email protected]
WHILE (0 < (SELECT COUNT(ID) FROM #req)) BEGIN
SELECT TOP 1 @id=ID FROM #req
INSERT INTO Action (RequestID, StatusID, EmpID, DateStamp)
VALUES (@id, @statusID, @empID, GETDATE())
IF ((@mtf IS NOT NULL) AND (0 < LEN(RTRIM(@mtf)))) BEGIN
UPDATE Request SET [email protected] WHERE [email protected]
END
DELETE #req WHERE [email protected]
END
DROP TABLE #req
SELECT @[email protected]@IDENTITY, @statusID=StatusID FROM Action
SELECT TOP 1 @statusID=ID FROM Status
WHERE (@statusID<ID) AND (-1 < Sequence)
EXEC spSendEventNotificationEmail @packetID, @statusID, 'http:\\cpweb:8100\NextStep.aspx'
END ELSE BEGIN
SET @statusID = -1
END
DROP TABLE #act
END
Идея о том, как данные таблицы связаны:
Возможно, вы могли бы переписать почти все его на основе набора. Также 'TOP 1' без заказа и' @@ IDENTITY' выглядят подозрительными. Что делает 'spSendEventNotificationEmail'? В конечном итоге вызывает вызов 'sp_send_dbmail', если это может быть проблема с правами доступа? Вы проверяете возвращаемое значение этой процедуры? –
Кажется правильным. Это может быть проблема с правами доступа из-за того, что пользователь вызывает внешнюю хранимую процедуру? –
ОК, я разработчик C#, а не парень SQL. Я действительно не знаю, что этот * установлен на основе пути *, но я открыт для ввода. Также, как я могу проверить разрешения? Обе процедуры расположены на одном сервере и в той же базе данных. – jp2code