Salve,
solitamente, “NO”, in quanto una query restituisce “risultati” e non “messaggi”, e quindi un “set”, sia esso un “empty set" (0 righe) o “popolato”, quindi “n righe”…
quindi la domanda e' d'obbligo… come “vuoi” questo messaggio, che tecnicamente non ha neanche “troppo” senso… brutalmente potresti (ma non dovresti), eventualmente scrivere
DECLARE @param int = x;
IF (NOT EXISTS(SELECT 1
FROM dbo.tabella
WHERE colonnaPk = @param)) BEGIN
PRINT 'tuo messaggio per nessun risultato';
RETURN;
END;
SELECT .....
FROM dbo.tabella
WHERE colonnaPk = @param;
e catturare via Ado.NET (non credo EntityFramework lo permetta… e qui “kudos to Ado.NET” :D ) similarmente a https://stackoverflow.com/questions/1880471/capture-stored-procedure-print-output-in-net
ma NON ha senso… potresti eventualmente anche evitare la la ricerca iniziale IF (NOT EXISTS….) e proiettare subito la tua query di SELECT…
quindi
DECLARE @param int = x;
SET @@ROWCOUNT ON;
DECLARE @r int = NULL;
SELECT .....
FROM dbo.tabella
WHERE colonnaPk = @param;
SELECT @r = @@ROWCOUNT;
IF (@r = 0) BEGIN
PRINT 'tuo messaggio per nessun risultato';
END;
e di nuovo catturare come sopra il risultato… anche SE eviti la “doppia” ricerca, non ha senso in quanto, comunque, dopo la proiezione, lato client, tu hai il risultato… quindi puoi ispezionare il set ritornato e agire di conseguenza…
e' vuoto?? sollevi eccezione o gestisci “come preferisci”…
e' pieno?? popoli il tuo model come meglio credi…
quindi, di nuovo… a che pro???
salutoni romagnoli
–
Andrea