Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB.NET 2.0] Output parameter di una stored procedure

    Ciao ragazzi, ho 1 problema con questa stored procedure:

    codice:
    ALTER PROCEDURE spCreaNuovoAlias
    (
    		@IDAlias int OUTPUT,
    		@Alias varchar(255),
    		@RagioneSociale varchar(255),
    		@i int,
    		@IDAzienda int OUTPUT
    				
    	)
    
    As
    	
    	begin transaction
    	INSERT INTO dbo.Aliases
    	(Alias) VALUES (@Alias)
    	SET @IDAlias = SCOPE_IDENTITY() 
    	INSERT INTO dbo.Aziende
    	(IDAlias,RagioneSociale) VALUES (@IDAlias,@RagioneSociale)	
    
    If (@i=0)
    Begin
    	INSERT INTO dbo.Fornitori
    	(IDAzienda) VALUES (@IDAlias)	
    End
    ELSE If (@i=1)
    	INSERT INTO dbo.Clienti
    	(IDAzienda) VALUES (@IDAlias)
    
    SET @IDAzienda = SCOPE_IDENTITY()
    
    commit transaction
    Dovrei riuscire a inserire nella tabella clienti (per il momento a @i do sempre il valore 1) e ottenere in uscita il numero l' IDAzienda creato. La SP funziona bene, cioè crea un record nella tabella Aziende e una nella tabella Clienti con lo stesso ID, ma quando provo a recuperare l'IDAzienda creato, questo è sempre 0.
    Vi incollo il codice VB.NET:

    codice:
     Dim myConnectionString As String
                myConnectionString = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
                Dim myConnection As System.Data.SqlClient.SqlConnection = New Data.SqlClient.SqlConnection(myConnectionString)
    
                Dim cmd As New Data.SqlClient.SqlCommand("spCreaNuovoAlias", myConnection)
                cmd.CommandType = Data.CommandType.StoredProcedure
                cmd.Parameters.AddWithValue("@Alias", Me.TBAlias.Text)
                cmd.Parameters.AddWithValue("@IDAlias", "")
                cmd.Parameters.AddWithValue("@RagioneSociale", Me.TBRagioneSociale.Text)
                cmd.Parameters.AddWithValue("@i", 1)
                Dim IDAzienda As New Data.SqlClient.SqlParameter("@IDAzienda", Data.SqlDbType.Int, 32, Data.ParameterDirection.Output)
                cmd.Parameters.AddWithValue("@IDAzienda", "")
    
                myConnection.Open()
                cmd.ExecuteScalar()
    
                Dim ID As Integer = Convert.ToInt32(IDAzienda.Value)
                myConnection.Close()
    A questo punto ID è 0, invece che l'ultimo ID creato. Cosa sbaglio secondo voi?

  2. #2
    Utente di HTML.it L'avatar di Franz78
    Registrato dal
    Sep 2004
    Messaggi
    730
    Prova a cambiare questa:

    cmd.Parameters.AddWithValue("@IDAzienda", "")
    con questa:
    cmd.Parameters.Add(IDAzienda)

  3. #3
    Utente di HTML.it L'avatar di Franz78
    Registrato dal
    Sep 2004
    Messaggi
    730
    dimenticavo
    e poi riprendilo cosi:


    int valore = (int)cmd.ExecuteNonQuery();

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.