MainframeSupports
tip uge 27/2014:

Når du med SPUFI, QMF eller et lignende værktøj skal opdatere eller slette rækker på en tabel, så starter du sikkert med at skrive et SELECT statement, der henter de rækker, der skal slettes eller opdateres. Herefter skriver du sandsynligvis dit SELECT statement om til en DELETE eller en UPDATE. Hvis du bruger SPUFI, så laver du højst sandsynligt en kopi af din SELECT og omskriver kopien. I QMF og lignende værktøjer, hvor man kun kan behandle et SQL statement ad gangen, er det ikke så lige til bare at lave en kopi. Her er det vigtigt at have en nem måde at komme fra SELECT til DELETE eller UPDATE og tilbage igen.

Omskrivning af et SELECT statement til en DELETE er utrolig nemt. Det er bare at erstatte SELECT med DELETE og fjerne listen af kolonner, der blev lavet SELECT af. Her har de fleste af os nok benyttet en *, da vi jo ved, at vi skal ende med en DELETE. Og det er nemt at skifte tilbage til SELECT, især hvis du benytter SELECT *.

Anderledes besværligt forholder det sig med at omskrive en SELECT til en UPDATE. Syntaksen frem til WHERE er helt forskellig for de to statements. Her har jeg på det seneste udviklet en måde at skrive SELECT blandet med UPDATE syntaks, så det er forholdsvis let at skifte mellem SELECT og UPDATE i for eksempel QMF. Lad mig vise dig et eksempel:

SELECT *
FROM mytable
-- SET someDateCol = current date
--   , anotherCol = 10
WHERE anImportantCol = 'xxxx'
  AND anotherCol = 5

Ovenstående ser måske lidt fjollet ud, men hvis du kommenterer første linie ud med --, erstatter FROM i anden linie med UPDATE og fjerner kommentarerne i tredie og fjerde linie, så har du pludselig et fuldt færdigt UPDATE statement. Og det er nemt at skifte mellem UPDATE og SELECT, hvad der er en stor fordel, hvis der skal laves om i WHERE delen, og du lige vil kontrollere, om det nu også er de rigtige rækker, der vil blive opdateret.

Forrige danske tip        Last tip in english        Tip oversigten