我想知道有沒有人能夠並願意協助我。 在我的Sql Server存儲過程中,我有一系列的if/else if語句,我希望有一點幫助可以將它更改爲case ... when ...然後,因爲我覺得它會更有效率,看起來不那麼混亂。 我不是要求你爲我做這件事,只是一個簡單的例子,讓我能夠把握住它。將if/else轉換爲case
我strored過程如下...
CREATE PROCEDURE [Blog].[ttc_BlogPosts]
@Status varchar(50) = '' ,
@EntryId int = '',
@Title nvarchar(max) = '',
@Added datetime = '',
@Updated datetime = '',
@Message nvarchar(max) = '',
@ImgId int = '',
@ImgUrl nvarchar(max) = ''
AS
BEGIN
IF(@Status = 'Display')
begin
select Id, EntryTitle, Message, ImageUrl, DateAdded, LastEdited
from Blog.BlogEntry
order by DateAdded desc
end
else if(@Status = 'AddPost')
begin
insert into Blog.BlogEntry (EntryTitle, Message, DateAdded, ImageUrl)
values (@Title, @Message, GETDATE(), @ImgUrl)
end
else if(@Status = 'DisplayPost')
begin
select EntryTitle, DateAdded, LastEdited, Message, ImageUrl
from Blog.BlogEntry
where Id = @EntryId
end
else if(@Status = 'UpdatePost')
begin
update Blog.BlogEntry
set EntryTitle = @Title, Message = @Message, LastEdited = GETDATE()
where Id = @EntryId
end
else if(@Status = 'UpdatePostImage')
begin
update Blog.BlogEntry
set ImageUrl = @ImgUrl, LastEdited = GETDATE(), EntryTitle = @Title, Message = @Message
where Id = @EntryId
end
else if(@Status = 'DeletePost')
begin
delete from Blog.BlogEntry
where Id = @EntryId
end
END
任何幫助,你們願意提供將非常感謝。如果需要進一步的細節,請不要猶豫給我留言;)
一件事,你現在可以做的就是添加縮進開始結束塊這將是更具可讀性。 – lad2025
簡單答案[案件不是用於控制流(https://msdn.microsoft.com/en-us/library/ms174290.aspx) – lad2025
我認爲這是一種有效的代碼,因爲它僅要求每個指定一個SP行動。但是,如果您對此腳本感到厭煩,那麼僅僅因爲它不是面向事務的,就知道每個存儲過程腳本中的BEGIN TRAN - DO HERE - END TRAN。 :) –