venerdì 24 febbraio 2017

Assegnare variabile con SELECT

Quando si usa l'istruzione SELECT per assegnare un campo ad una variabile (@id), sarà scontato, ma è sempre consigliabile prima inizializzarla.
Nel seguente esempio la select non torna NULL come ci si potrebbe aspettare ma 1!
DECLARE @id INT = 1
SELECT @id = 2 WHERE 1=0
SELECT @id  -- esce 1

Quindi se si vuole sia restituito NULL si dovrà provvedere impostando la variabile a NULL poco prima della SELECT:
DECLARE @id INT = 1
SET @id = NULL
SELECT @id = 2 WHERE 1=0
SELECT @id  -- ora invece esce NULL
               

venerdì 3 febbraio 2017

Speedy logging

Se un eseguibile o un dll non funzionano come dovrebbero e l'ambiente in cui sono state installate non ci consente di eseguire un debug puntuale. Un modo veloce per cercare di capire dov'è il problema consiste nell'aggiungere nel codice un riga di logging banale ma efficace come questa:
File.AppendAllText("c:\\miolog.txt", "Passato di qua" + Environment.NewLine);
NB: unica accortezza quella di ricordarsi di togliere le righe di log prima di effettuare il rilascio ufficiale.

lunedì 23 gennaio 2017

Calcolo prima e ultima data del mese

Istruzione SQL per ritornare il primo del mese da una data qualsasi:
DECLARE @dt DATETIME = GETDATE()
SELECT 
    DATEADD(DAY, -DAY(@dt) + 1, @dt) primodelmese, 
    DATEADD(DAY, -1, DATEADD(MONTH, 1, DATEADD(DAY, 1 - DAY(@dt) , @dt))) ultimedelmese