Controllo su i recor di una Table

domenica 29 aprile 2007 - 14.46

melmar20 Profilo | Junior Member

Ciao a tutti!

ho bisogno di fare un controllo un pò particolare su una tabella.Mi spiego meglio: ho una Store Procedure che mi restituisce il massimo valore presente in una colonna di una tabella.Il problema è che quando vado a richiamare la funzione e nella tabella non c'è nessun valore mi viene segnalato un errore.

Ora avrei bisogno di ovviare a questo, mi spiego vorrei richiamare la StoreProcedure e a seconda di ciò che mi restituisce esegure una parte di codice o un'altra. Quindi se nella tabella non c'è nessun valore la mia pagina dovrà stamparmi "nessun valore presente"altrimenti dovrà stamparmi "il massimo valore è:"+ Valore.

P.S. Sto utilizzando Microsoft SQL Server come Db e come linguaggio per le pagine asp vb.net.

Fatemi sapere!!
Ciaooo!!

Xnetus Profilo | Junior Member

Semplicemente potresti fare un "Count(*)" per controlare se uguale a 0 la tabella è vuota, altrimenti procedi con le varie procedure.

lbenaglia Profilo | Guru

>ho bisogno di fare un controllo un pò particolare su una tabella.Mi
>spiego meglio: ho una Store Procedure che mi restituisce il massimo
>valore presente in una colonna di una tabella.Il problema è che
>quando vado a richiamare la funzione e nella tabella non c'è
>nessun valore mi viene segnalato un errore.

Ciao melmar20,

Puoi utilizzare le funzioni CASE, ISNULL() o COALESCE() per fare restituire un valore diverso da NULL:

USE tempdb; CREATE TABLE dbo.Students( StudentID int NOT NULL IDENTITY PRIMARY KEY, FirstName varchar(10) NOT NULL, LastName varchar(10) NOT NULL ); SELECT MAX(StudentID) AS [Max] , ISNULL(MAX(StudentID), 0) AS Max_ISNULL , COALESCE(MAX(StudentID), 0) AS Max_COALESCE , CASE WHEN MAX(StudentID) IS NULL THEN 0 ELSE MAX(StudentID) END AS Max_CASE FROM dbo.Students; /* Output: Max Max_ISNULL Max_COALESCE Max_CASE ----------- ----------- ------------ ----------- NULL 0 0 0 (1 row(s) affected) */ INSERT dbo.Students VALUES('Lorenzo', 'Benaglia'); SELECT MAX(StudentID) AS [Max] , ISNULL(MAX(StudentID), 0) AS Max_ISNULL , COALESCE(MAX(StudentID), 0) AS Max_COALESCE , CASE WHEN MAX(StudentID) IS NULL THEN 0 ELSE MAX(StudentID) END AS Max_CASE FROM dbo.Students; /* Output: Max Max_ISNULL Max_COALESCE Max_CASE ----------- ----------- ------------ ----------- 1 1 1 1 (1 row(s) affected) */ DROP TABLE dbo.Students;

Per capire bene la differenza tra le 3 funzioni, leggi molto attentamente questo articolo di Aaron:
http://databases.aspfaq.com/database/coalesce-vs-isnull-sql.html

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5