istudent Ответов: 1

Как я могу сделать, если еще заявление в моей хранимой процедуры?


This is part of a store procedure. 

	--select * from @MyTable;

	declare @seed int = (select Answer from @MyTable where IsSeed = 1);
	declare @drawDown int = (select sum(Answer) from @MyTable where IsSeed = 0);
	declare @ansToCheck nvarchar(max) = (select ans.answer from Answers ans where ans.ProjectID = @projectId and 	
										ans.QuestionID in (select ID from Questions where (ParentID = @parentQuestionId or ID = @parentQuestionId) and Day = @providedAnsDay));

	select 
		@projectId as ProjectId, 
		isnull(@parentQuestionId, -1) as ParentQuestionId, 
		@providedQuestionId as ProvidedQuestionId,
		isnull(@seed, 0) as Seed, 
		isnull(@drawDown, 0) as Expended, 
		isnull(@seed, 0) - isnull(@drawDown, 0) as Remaining,
		@ansToCheck as AnsToCheck;

END


I need to run delete statement if 'Remaining' is less than or equals to 0 before store procedure return. How do i do it ? 


Что я уже пробовал:

Я знаю, как использовать блок if и else, но он не позволит мне вставить оператор select.

Как мне этого добиться?

F-ES Sitecore

Не следует помещать бизнес-логику в хранимые процедуры. Код, вызывающий эту процедуру, должен решить, нужно ли что-то удалять, и если да, то он может инициировать оператор delete.

istudent

Я думаю об этом, сэр, и стараюсь не делать этого из магазинной процедуры. Это связано с проблемой реализации. Это то, что говорят, если есть некоторые данные за понедельник, поданные в (страница 1) и вторник, поданные в (Страница 2). Но кто-то в будущем решил отредактировать данные за понедельник до 0, тогда поле вторника не должно отображаться на странице 2.

RedDk

Это похоже на псевдокод. Очистите его, чтобы показать TSQL, и мы продвинемся еще на один шаг вперед по пути к выяснению того, что делать дальше.

1 Ответов

Рейтинг:
4

Richard Deeming

SELECT
    @projectId as ProjectId, 
    isnull(@parentQuestionId, -1) as ParentQuestionId, 
    @providedQuestionId as ProvidedQuestionId,
    isnull(@seed, 0) as Seed, 
    isnull(@drawDown, 0) as Expended, 
    isnull(@seed, 0) - isnull(@drawDown, 0) as Remaining,
    @ansToCheck as AnsToCheck;

If isnull(@seed, 0) - isnull(@drawDown, 0) <= 0
BEGIN
    ...
END;


Maciej Los

5ed!