Parametri opzionali in Stored Procedure

mercoledì 15 ottobre 2008 - 11.30

gabriel81 Profilo | Junior Member

Ciao!
E' possibile dichiarare dei parametri opzionali nelle SP di sql server 2005?

lbenaglia Profilo | Guru

>E' possibile dichiarare dei parametri opzionali nelle SP di sql
>server 2005?

Ciao Gabriel,

Si, certo, è sufficiente assegnare loro un valore di default.
Osserva il seguente esempio:

USE tempdb; GO CREATE PROCEDURE dbo.up_GetUser( @FirstName varchar(10) = 'Lorenzo', @LastName varchar(10) = 'Benaglia' ) AS SELECT @FirstName AS FirstName , @LastName AS LastName; GO EXEC dbo.up_GetUser; /* Output: FirstName LastName ---------- ---------- Lorenzo Benaglia (1 row(s) affected) */ EXEC dbo.up_GetUser 'David'; /* Output: FirstName LastName ---------- ---------- David Benaglia (1 row(s) affected) */ EXEC dbo.up_GetUser 'David', 'De Giacomi'; /* FirstName LastName ---------- ---------- David De Giacomi (1 row(s) affected) */ DROP PROCEDURE dbo.up_Getuser;

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

gabriel81 Profilo | Junior Member

La mia sp ha i seguenti parametri:
@F_DataDa smalldatetime = '01/01/1970' , --clausula between
@F_DataA smalldatetime = '31/12/2050' , --clausula between
@F_RagioneSociale nvarchar(50) = '', -- clausula like
@F_ImportoDa smallmoney,
@F_ImportoA smallmoney

Siccome sul form che chiama la sp l'utente deve essere libero di decidere con quali parametri usare e quali no per affinare la ricerca, devo
o assegnare dei default (con ragsociale ci sono perchè è un like fra %%, con le date ho ovviato, ma con gli importi ?? ) o stabilire dei blocchi if...

infatti l'utente potrebbe riempire il campo Importo da ma non quello a come ad indicare tutti i record con voci superiori a x.
Devo fare come per le date?(inserendo tipo 0,01 centesimo di € in basso e 1 miliardo di € in alto)????

lbenaglia Profilo | Guru

>La mia sp ha i seguenti parametri:
>@F_DataDa smalldatetime = '01/01/1970' , --clausula between
>@F_DataA smalldatetime = '31/12/2050' , --clausula between

ATTENZIONE: specifica le date SEMPRE in formato ANSI SQL 'YYYYMMDD' senza alcun separatore se non vuoi incorrere in una montagna di problemi...

>Siccome sul form che chiama la sp l'utente deve essere libero
>di decidere con quali parametri usare e quali no per affinare
>la ricerca, devo
>o assegnare dei default (con ragsociale ci sono perchè è un like
>fra %%, con le date ho ovviato, ma con gli importi ?? ) o stabilire
>dei blocchi if...
>
>infatti l'utente potrebbe riempire il campo Importo da ma non
>quello a come ad indicare tutti i record con voci superiori a
>x.
>Devo fare come per le date?(inserendo tipo 0,01 centesimo di
>€ in basso e 1 miliardo di € in alto)????
0 come importo minimo e 214.748,3647 come massimo (massimo valore per il data type smallmoney).

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

gabriel81 Profilo | Junior Member

Grazie 1000!
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5