Logica da usare per ricerca avanzata di un form con stored procedure

domenica 12 aprile 2009 - 11.07

valerik Profilo | Junior Member

Ciao a tutti,
vorrei chiedervi quale approccio sia migliore per una ricerca avanzata tramite form, utilizzando stored procedure.
Se io ho 10 campi da riempire in una pagina web, alla stored procedure devo passare comunque tutti e 10 i parametri anche se non vengono compilati tutti?
Ma poi come vengono gestiti i valori "null"?C'e' un modo per escluderli nella clausola del WHERE?

Esempio dummies.
CREATE PROCEDURE [dbo].[sp_ricerca] @nome varchar(50), @cognome varchar(50), @eta int, @tipo_documento int AS BEGIN SET NOCOUNT ON; SELECT * from .... inner join ... where nome = @nome and cognome = @cognome and eta = @eta and tipo_documento = @tipo_documento END


Grazie
valerik

Caterwomtious Profilo | Newbie

Buona Pasqua

Questo è un modo che va bene per me:

1. Crea un variabile tavolo:

DECLARE @vostroTavolo TABLE (@nome varchar(50), @cognome varchar(50) .... )

2. Se il primo campo ha un valoro usa solo quello campo per riempire il variabile tavolo:

IF @nome IS NOT NULL THEN SELECT @nome, @cognome, ... INTO @vostroTavolo FROM AltroTavolo WHERE Nome = @nome

3. Crea un altro variabile:

DECLARE @tavoloHaDati int

4. Poi, per ognuno degli altri campi che hanno un valoro, se il variabile tavolo ha i dati, usa il valoro per rimuovere i dati che non sono corretto. Oppore se il variabile tavolo è ancora vuoto, usa il valoro per ne riempire.

SELECT @tavoloHaDati = COUNT(*) FROM @vostroTavolo

IF @tavoloHaDati = 0 THEN
IF @cognome IS NOT NULL THEN
BEGIN
SELECT @nome, @cognome, ... INTO @vostroavolo FROM AltroTavolo WHERE Cognome = @cognome
ELSE
DELETE FROM @vostroTavolo WHERE NOT Cognome = @cognome
END

...e lo stesso per ognuno degli altri campi...

5. Finalmente, ottene i dati dal variabile tavolo

SELECT * FROM @vostroTavolo

Sto imparando l'italiano - spero che mi capisce!

---
Sono qui perché sto imparando l'italiano. Quando ho sbagliato, dicami per favore!
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5