2016-10-06 3 views
-2

Я пытаюсь найти лучший способ решить эту проблему.если заявление в хранимой процедуре

У меня есть таблица базы данных для учебных занятий, выполненных в университете, в университете есть несколько кампусов, которые учат мне. Я пытаюсь показать gridview для каждого кампуса на основе выпадающего списка. Мне нужно обновить поле таблицы действий CampusOccurred на основе комнаты. Номера EMG12, OG114, DS15.

Если номер начинаются с: -

E - Заработать Campus
O - Оден Campus
D - Donen Campus

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, но Я просто не уверен, как лучше всего это сделать. Можно ли делать инструкции If в SQL?

+0

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

+0

Что [тег: 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

Thats точно, что я пытаюсь сделать, даст это попробовать сейчас. Большое спасибо :) – Alexandria

+0

@ Alexandria Рад помочь. Пожалуйста, отметьте вопрос как ответ, если он сработает для вас. – Gasper

+0

Это дает мне ошибку, когда я пытаюсь запустить ее. Это то, что я делаю. ПРОЦЕДУРА СОЗДАНИЯ [dbo].[CampusOccurred] КАК НАЧАТЬ обновление Активный набор Activities.CampusOccurred = (случай, левый (номер, 1), когда 'Е', то 'заработать' когда 'O', то '' Оден , когда 'D', то ' Donen ') END – Alexandria

2

Вы можете написать запрос SQL, который делает что-то вроде этого:

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 

Если вы запрашиваете данные таким образом из базы данных, то работа делается для вас.

Примечание: большинство, но не всех баз данных поддерживают left(). Все поддерживают функцию, эквивалентную.

+0

Извините, я не понимаю, как это работает. После этого я делаю инструкцию по обновлению. – Alexandria

+0

@ Александрия. , , Если вам просто нужны данные в виде сетки, достаточно выбрать 'select'. Вам не нужно фактически изменять данные. –

Смежные вопросы