Stored Procedure o Funzione?

martedì 25 maggio 2010 - 15.12

nikkysixx Profilo | Junior Member

Ciao a tutti,premetto che uso Sql Server 2008 da poco,e ho la necessita'di richiamare una stored procedure da un altra stored procedure,e di assegnare il valore di tale procedura a una variabile,per poter riutilizzare tale valore. Credo che in realtà la mia stored procedure dovrebbe essere una funzione

PROCEDURE [dbo].[search_id_cliente] @nome_cliente as nvarchar(255) AS BEGIN select id_cliente from clienti WHERE nome_cliente = @nome_cliente END

Quindi la domanda è come modificare la procedura qui sopra,e la sintassi per richiamare tale procedura in un altra, e passare il valore ottenuto ?
Nell esempio,vorrei memorizzare il valore ottenuto dalla [search] in una variabile int di una nuova procedura

Grazie di tutto!

Gluck74 Profilo | Guru

domanda di curiosità: non può stare tutto dentro una unica SP?

per creare una funzione nel tuo caso server "a valori scalari":

391x212 8Kb

Il contenuto di questa funzione potrebbe essere questo:
CREATE FUNCTION search_id_cliente ( -- Add the parameters for the function here @nome_cliente varchar(500) ) RETURNS int AS BEGIN DECLARE @ResultVar int select @ResultVar=id_cliente from clienti WHERE nome_cliente = @nome_cliente if (@ResultVar IS NULL) SET @ResultVar=-1 RETURN @ResultVar END GO
Ma io aggiungerei qualche controllo in più, vedi tu cosa ti conviene in base alle tue necessità.


Dopodiché nella SP dove vuoi riutilizzare la funzione, si serve una semplice riga come questa:
DECLARE @ricerca int SELECT @ricerca = [search_id_cliente]('<nome da ricercare>')

Ciao e buon lavoro

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

lbenaglia Profilo | Guru

>Ciao a tutti,premetto che uso Sql Server 2008 da poco,e ho la
>necessita'di richiamare una stored procedure da un altra stored
>procedure,e di assegnare il valore di tale procedura a una variabile,per
>poter riutilizzare tale valore. Credo che in realtà la mia stored
>procedure dovrebbe essere una funzione

Non ho capito molto di quello che vorresti fare, ma ti posso dire che una UDF non può richiamare una SP.
Quindi la soluzione consisterà nel definire 2 SP.
La SP chiamata può restiruire valori alla chiamante tramite variabili di output o un valore di ritorno (solo se int).
A questo punto, buon lavoro

>Grazie di tutto!
Prego.

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

nikkysixx Profilo | Junior Member

@Gluck74:
"non può stare tutto dentro una unica SP?"
Lo sto facendo per esercitarmi,e capire un po'di piu' sql server ;)
Cosa intendi per "farei un po'di controlli " ?


Thanks

Gluck74 Profilo | Guru

un po di controlli nel senso che dovresti controllare di non avere dei risultati inaspettati.
Io ho messo solo il controllo che la query non trovi nulla in tabella, quindi da NULL restituisco -1.

Facendo una funzione a valore scalare devi restituire un solo dato, ed aspettandosi degli ID Clienti, ho presunto che siano INT.
Devi fare in modo che la funzione restituisca sempre valori congrui senza errori.

Esempio,
che succede se la query dovesse trovare più risultati per lo stesso parametro passato?
che succede se non ci sono risultati? (controllo che ho fatto io)
che succede se il risultato non è del tipo aspettato?


Ho reso l'idea?

Ciao e buono studio

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
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