如果在存储过程中声明

问题描述:

我正在尝试制定出解决此问题的最佳方法。如果在存储过程中声明

我有一个数据库表,用于在大学完成的教学活动,大学有几个校区正在进行教学发生我试图根据下拉列表显示每个校园的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://*.com/questions/63447/how-to-perform-an-if-then-in -an-sql-select – Alexan

+0

[tag:c#]与提出的问题有什么关系?我假设你想在存储过程中根据问题标题 – Kritner

+0

来标记你使用的dbms。只有几个dbms产品具有符合ANSI SQL的存储过程。 – jarlh

如果我正确理解你的要求,你想在一个更新语句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

你可以写一个SQL查询,确实是这样的。

注意:大多数但不是全部数据库都支持left()。全部支持相同的功能。

+0

对不起,我不明白这是如何工作的。在这之后我要做更新声明吗? – Alexandria

+0

@Alexandria。 。 。如果你只需要网格视图中的数据,那么'select'就足够了。您不需要实际修改数据。 –