Stored proc e parametri di output

martedì 14 agosto 2007 - 19.14

_J_ Profilo | Senior Member

ciao ragazzi,
visto che non li ho mai usati, qualcuno di voi potrebbe gentilmente spiegarmi come si usano i parametri di output per le stored procedures?
grazie in anticipo!
_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

denis.basei Profilo | Senior Member

Onestamente non le ho mai usate però ho letto qualcosa. Se leggi il contenuto di questo link dovresti trovare qualche indicazione utile: http://msdn2.microsoft.com/it-it/library/ms378108.aspx


Ciao

Denis

_J_ Profilo | Senior Member

ciao,
sì, l'ho già letto ma a dire il vero non è molto chiaro... e poi non viene trattato il caso di più parametri di output..
cmq grazie lo stesso

_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

alx_81 Profilo | Guru

>ciao ragazzi,
Ciao!

>visto che non li ho mai usati, qualcuno di voi potrebbe gentilmente
>spiegarmi come si usano i parametri di output per le stored procedures?
In che ambito ti servono? Solo database oppure ti serve come gestirle anche lato codice vb.net o c#?

Il link che ti ha indicato denis.basei è ok e direi che è piuttosto esplicativo..

Comunque provo a semplificarti la cosa con un esempio (non ho Management studio con me, quindi vado a memoria, se ci sono errori ti tocca correggere )..
USE tempdb GO -- creo la tabella di esempio CREATE TABLE provaparametri ( id int identity PRIMARY KEY CLUSTERED, descrizione varchar(10) NOT NULL, valore tinyint ) -- popolo la tabella INSERT INTO provaparametri (descrizione, valore) SELECT 'UNO', 1 INSERT INTO provaparametri (descrizione, valore) SELECT 'DUE', 2 INSERT INTO provaparametri (descrizione, valore) SELECT 'TRE', 3 INSERT INTO provaparametri (descrizione, valore) SELECT 'QUATTRO', 4 INSERT INTO provaparametri (descrizione, valore) SELECT 'CINQUE', 5 GO CREATE PROCEDURE proc_provaparametri @descrizione varchar(10), @valore tinyint, @idinserito int NULL OUTPUT, @conteggio int NULL OUTPUT AS BEGIN SET NOCOUNT ON; INSERT INTO provaparametri (descrizione, valore) SELECT @descrizione, @valore SET @idinserito = SCOPE_IDENTITY() SELECT @conteggio = COUNT(*) FROM provaparametri END GO DECLARE @miaDescrizione varchar(10) DECLARE @mioValore tinyint DECLARE @id int DECLARE @count int SET @miaDescrizione = 'SETTE' SET @mioValore = 7 EXEC proc_provaparametri @miaDescrizione, @mioValore, @id OUTPUT, @count OUTPUT -- controllo i valori ritornati dai parametri di output SELECT ID = @id , Conteggio = @count -- pulizia DROP TABLE provaparametri DROP PROCEDURE proc_provaparametri

Come vedi, per gestire più parametri di output, basta semplicemente aggiungerne più di uno . E per fare ciò è sufficiente mettere la parola chiave OUTPUT di fianco alla definizione del parametro. Nulla più..

Per utilizzarlo da codice, devi creare la collezione Parameters mettendo la corretta Direction dei parametri di output. Dopo l'esecuzione del comando, basta accedere in lettura alla collezione andando per nome parametro e ritornando il value.

Spero ti possa essere d'aiuto.
>grazie in anticipo!
Di nulla!

Alx81 =)

http://blogs.dotnethell.it/suxstellino

_J_ Profilo | Senior Member

>In che ambito ti servono? Solo database oppure ti serve come
>gestirle anche lato codice vb.net o c#?
in entrambi gli ambiti, e per sapere quando e come si usano


>Comunque provo a semplificarti la cosa con un esempio (non ho
>Management studio con me, quindi vado a memoria, se ci sono errori
>ti tocca correggere )..
figurati! anzi è già tanto che hai postato il codice... grazie 1000

>Come vedi, per gestire più parametri di output, basta semplicemente
>aggiungerne più di uno . E per fare ciò è sufficiente mettere
>la parola chiave OUTPUT di fianco alla definizione del parametro.
>Nulla più..
>Per utilizzarlo da codice, devi creare la collezione Parameters
>mettendo la corretta Direction dei parametri di output. Dopo
>l'esecuzione del comando, basta accedere in lettura alla collezione
>andando per nome parametro e ritornando il value.
sì, dell'output nella stored lo sapevo, il problema è come richiamare quel parametro/i da codice, visto che ci provo e non mi restituisce nulla...
cmq ora vedrò il tuo codice... grazie ancora!

>Spero ti possa essere d'aiuto.
questo è poco, ma sicuro

_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."
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