2016-10-06 5 views
-2

Ich versuche, den besten Weg, um dieses Problem zu lösen.if-Anweisung in gespeicherte Prozedur

Ich habe eine Datenbanktabelle für Lehrtätigkeiten an einer Universität, die Universität hat ein paar Standorte, an denen ich unterrichte. Ich versuche, eine Gridview für jeden Campus anhand einer Dropdown-Liste anzuzeigen. Ich muss das Aktivitäts-Tabellenfeld CampusOccurred basierend auf dem Raum aktualisieren. Die Zimmer sind EMG12, OG114, DS15.

Wenn Raum beginnen mit: -

E - Verdienen Campus
O - Oden 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 

ich den Rest kann mich Liste und gridview Drop-Down-Anzeigen aber Ich bin mir einfach nicht sicher, wie ich am besten vorgehen soll. Ist es möglich, If-Anweisungen in SQL zu machen?

+0

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

+0

Was hat [tag: C#] mit der gestellten Frage zu tun? Ich gehe davon aus, dass Sie dies in einer gespeicherten Prozedur auf der Grundlage des Fragetitels – Kritner

+0

Tag der von Ihnen verwendeten dbms tun wollten. Nur wenige dbms-Produkte verfügen über ANSI SQL-konforme gespeicherte Prozeduren. – jarlh

Antwort

2

Wenn ich Ihre Anfrage richtig verstanden, Sie wollen eine case Anweisung in Update:

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

Das ist genau was ich versuche zu tun, werde dies jetzt versuchen. Vielen Dank :) – Alexandria

+0

@Alexandria Froh, zu helfen. Bitte markieren Sie die Frage als beantwortet, wenn sie für Sie funktioniert. – Gasper

+0

Es gibt mir einen Fehler, wenn ich es versuche und es ausführen. Das ist was ich mache. CREATE PROCEDURE [dbo].[CampusOccurred] AS BEGIN Update Aktivitäten set = (Fall links (Zimmer, 1) Activities.CampusOccurred wenn 'E' und dann 'verdienen' wenn 'O' und dann 'Oden' , wenn 'D' und dann " Donen ') ENDE – Alexandria

2

Sie können eine SQL-Abfrage schreiben, die so etwas wie dies funktioniert:

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 

Wenn Sie die Daten auf diese Weise aus der Datenbank holen, dann wird die Arbeit für Sie erledigt.

Hinweis: Die meisten, aber nicht alle Datenbanken unterstützen left(). Alle unterstützen eine Funktion, die äquivalent ist.

+0

Sorry, ich verstehe nicht, wie das funktioniert. Mache ich danach eine Update-Anweisung. – Alexandria

+0

@Alexandria. . . Wenn Sie nur die Daten in einer Rasteransicht benötigen, sollte ein 'select' ausreichen. Sie müssen die Daten nicht wirklich ändern. –