2016-10-06 93 views
-2

我正在嘗試制定出解決此問題的最佳方法。如果在存儲過程中聲明

我有一個數據庫表,用於在大學完成的教學活動,大學有幾個校區正在進行教學發生我試圖根據下拉列表顯示每個校園的gridview。我必須更新基於房間的活動表字段CampusOccurred。房間是EMG12,OG114,DS15。

如果房間開始: -

ë - 賺取校園
Ø - 奧登校園
d - 多南校區

My idea at the moment is:- 
For each row in Activites 
If Room MyString.ToCharArray()[0] = E 
Then Update CampusOccurred = Earn 
Else If Room MyString.ToCharArray()[0] = O 
Then Update CampusOccurred = Odean 

我可以做我自己顯示下拉列表和GridView休息,但我只是不確定上述的最佳方式。是否有可能在SQL中執行If語句?如果你取這樣從數據庫中,然後將工作爲您完成數據

select . . ., 
     (case when left(Room, 1) = 'E' then 'Earn Campus' 
      when left(Room, 1) = 'O' then 'Oden Campus' 
      when left(Room, 1) = 'D' then 'Donen Compus' 
     end) as Campus 

+0

http://stackoverflow.com/questions/63447/how-to-perform-an-if-then-in -an-sql-select – Alexan

+0

[tag:c#]與提出的問題有什麼關係?我假設你想在存儲過程中根據問題標題 – Kritner

+0

來標記你使用的dbms。只有幾個dbms產品具有符合ANSI SQL的存儲過程。 – jarlh

回答

2

如果我正確理解你的要求,你想在一個更新語句case

update Activities 
set CampusOccured = case left(Room,1) 
         when 'E' then 'Earn' 
         when 'O' then 'Oden' 
         when 'D' then 'Donen' 
        end 
+0

這正是我試圖做的,現在會給這個嘗試。非常感謝:) – Alexandria

+0

@Alexandria很高興幫助。請將問題標記爲已回答,如果它適合您。 – Gasper

+0

當我嘗試運行它時,它給了我一個錯誤。這就是我要做的。 CREATE PROCEDURE [dbo]。[CampusOccurred] AS BEGIN 更新活動集 = Activities.CampusOccurred(情況左(室1) 當 'O' 時 'E',則 '贏取' 然後 '奧登' 當 'd',然後「 Donen') END – Alexandria

2

你可以寫一個SQL查詢,確實是這樣的。

注意:大多數但不是全部數據庫都支持left()。全部支持相同的功能。

+0

對不起,我不明白這是如何工作的。在這之後我要做更新聲明嗎? – Alexandria

+0

@Alexandria。 。 。如果你只需要網格視圖中的數據,那麼'select'就足夠了。您不需要實際修改數據。 –