Sqlparameter e store procedure

mercoledì 24 agosto 2005 - 11.52

PEPE Profilo | Senior Member

Salve,
il mio problema e' che non riesco a recuperare un parametro dall'oggetto sqlcommand che esegue una storeprocedure.

Per semplicità vi posto direttamente la storeprocedure e il codice vb.

STORE PROCEDURE:
CREATE PROCEDURE DBO.INSERISCI_STAB_GENERALITA
(
@CODSTAB varchar(50) out, --Variabile per il codice stabilimento del tipo aa001
@ISTAT_REGIONE varchar(50) --Variabile corrispondente al codice regione dello stabilimento.
)
AS
DECLARE
@LETTERE varchar(2), --var di appoggio per la codifica della regione
@NUMERO int --var di appoggio per l'id dello stabiliemnto
BEGIN
--Seleziono il codice regione ed il contatore degli stabilimenti per creare il codice stabilimento
SELECT @LETTERE=SiglaCodifica, @NUMERO=NumeroCorrente FROM StatoCodiciUnivoci WHERE istat_regione=@ISTAT_REGIONE
-- Incremento il contatore degli id degli stabilimenti
SET @NUMERO= @NUMERO+1
--Aggiorno la tabella relativa ai codici degli stabilimenti
UPDATE StatoCodiciUnivoci SET Numerocorrente=@NUMERO WHERE istat_regione=@ISTAT_REGIONE
-- Genero l'id dello stabilimento grazie alla sigla ed al prograssivo
SET @CODSTAB= @LETTERE + cast(@NUMERO as varchar(3))
-- Inserisco i dati dello stabilimento nella tabella
INSERT INTO prova (Codice_Univoco) VALUES (@CODSTAB)
END
GO

CODICE CODE BEHIND

Dim ObjElementi As New ComponentArir.Elenchi
Dim objCommand As New SqlClient.SqlCommand
Dim objP As New SqlClient.SqlParameter
objP.Direction = ParameterDirection.Output
objP.ParameterName = "@CODSTAB"
objP.Value = "null"
objCommand.Parameters.Add(New SqlClient.SqlParameter("@ISTAT_REGIONE", "01"))
objCommand.Parameters.Add(objP)
'Procedura di una classe che esegue l'update
Dim risultato As Int32 = ObjElementi.EseguiUpdate(ComponentArir.Elenchi.manipulationProcedure.InserisciStabilimentoGeneralita, objCommand)
lblmessage.Text = objCommand.Parameters("@CODSTAB").Value & " - Stabilimento"

La store procedure funziona correttamente infatti nella tabella prova ho il corretto contenuto del codice stabilimento.
Quello che non mi funziona e' la stampa del parametro.
Infatti quando vado a fare objCommand.Parameters("@CODSTAB").Value non mi da nulla.

Qual'e' il problema?

Cteniza Profilo | Guru

Ti sei ricordato di mettere:
myCommand.CommandType = CommandType.StoredProcedure
?


PEPE Profilo | Senior Member

Si certo, tanto e' vero che la store procedure mi funziona correttamente quando vado ad eseguire il metodo.
Non vorrei che le variabili di output siano considerate dal command solo se vengono assegnate durante una select del tipo @nomevar=nomecampotabella, che nella mia store procedure non viene effettuato.

PEPE Profilo | Senior Member

Sono riuscito a risolvere il problema.
al posto di dichiarare un oggetto sqlparameter e di includerlo nella collection dei parametri dell'oggetto command, ho usato il metodo new sqlparameter all'interno dell'oggetto command.

objCommand.Parameters.Add(New SqlClient.SqlParameter("@CODSTAB", SqlDbType.NVarChar, 50, ParameterDirection.InputOutput, True, 0, 0, "", DataRowVersion.Current, "null"))

Ora e' tutto ok

Quando eseguo l'insert e recupero il valore me lo visualizza correttamente.

lblmessage.Text = objCommand.Parameters("@CODSTAB").Value & " - Stabilimento"


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