Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Stored procedure e parametri

    Ho una stored procedure su SQLServer 2000 che utilizzo per farmi restituire l'ultimo indirizzo:


    CREATE PROCEDURE dbo.sp_getLastID
    @ID int OUTPUT
    as

    SELECT SCOPE_IDENTITY() AS NewID

    exec @ID = NewID

    return
    GO


    All'interno del code behind di ASP.NET la richiamo in questo modo:

    Dim cmdSql As SqlCommand = New SqlCommand("sp_getLastID")
    cmdSql.CommandType = CommandType.StoredProcedure

    Dim myParm As SqlParameter = cmdSql.Parameters.Item("@ID")
    p_id = myParm.Value


    Il problema è che mi restituisce il seguente errore quando preva a leggere il parametro:

    SqlParameterCollection non contiene SqlParameter con ParameterName '@ID'.

    Qualcuno sa darmi uno spunto???
    Grazie
    Walter
    ---------------------------------
    Piove... Governo Ladro!?!

  2. #2

    Re: Stored procedure e parametri

    Originariamente inviato da walter.boss
    Qualcuno sa darmi uno spunto???
    la tua stored procedures restituisce un parametro. Devi quindi definire il tuo parametro come un parametro di output
    codice:
    myParm.Direction = ParameterDirection.Output
    Saluti a tutti
    Riccardo

  3. #3
    guardando meglio il tuo codice non mi sembra che aggiungi da nessuna parte il parametro al command prima di eseguirlo (forse non hai postato tutto il codice?)
    codice:
    Dim myParm As New SqlParameter
    myParm.ParameterName = "@ID"
    myParm.Direction = ParameterDirection.Output
    myParm.DbType = DbType.UInt32
    cmdSql.Parameters.Add(myParm)
    Saluti a tutti
    Riccardo

  4. #4
    OK... Ora non mi da più errore, ma il mio parametro di output non mi restituisce nulla...
    Walter
    ---------------------------------
    Piove... Governo Ladro!?!

  5. #5
    Originariamente inviato da walter.boss
    il mio parametro di output non mi restituisce nulla...
    devi postare tutto il codice. Se il codice fosse quello che avevi postato non mi sembra che esegui da nessuna parte il command.
    Saluti a tutti
    Riccardo

  6. #6
    eccolo:

    Dim myParm As New SqlParameter
    myParm.ParameterName = "@ID"
    myParm.Direction = ParameterDirection.Output
    cmdSql.Parameters.Add(myParm)

    Dim myReader As SqlDataReader = cmdSql.ExecuteReader()
    Walter
    ---------------------------------
    Piove... Governo Ladro!?!

  7. #7
    dovresti chiudere il datareader per poi leggere il parametro
    codice:
    myReader.Close()
    Dim p_id As Integer = cmdSql.Parameters("@ID").Value
    Saluti a tutti
    Riccardo

  8. #8
    Mi sto veramente incasinando, ora mi da' errore di connessione sulla riga in grassetto; ti posto tutta la procedura:

    Public Sub save()
    Dim da As OleDbDataAdapter
    Dim ds As DataSet
    Dim strSql As String
    'Dim cmdSql As New SqlClient.SqlCommand
    'Dim objParam As New SqlParameter
    Try
    p_cnn.Open()
    strSql = "INSERT INTO TA001_ANA_CLI (" & _
    "D_INS,D_ULT_AGG,C_UTE_INS,C_UTE_AGG,TA001_TA001_I D,C_CLI,T_COG_CLI,T_NOM_CLI,C_IVA," & _
    "T_IND_CLI,T_CIT_CLI,T_PRV_CLI,N_TEL_UNO,N_TEL_DUE ,T_EMA_CLI,T_WEB_CLI,F_CON)" & _
    " VALUES(" & _
    "" & Today() & "," & Today() & ",'""','""'," & p_clienteID & ",'" & p_codice & "','" & p_ragSoc & "','" & p_nome & "','" & p_piva & "'," & _
    "'" & p_Indirizzo & "','" & p_citta & "','" & p_prov & "','" & p_tel1 & "','" & p_tel2 & "','" & p_email & "'," & _
    "'" & p_web & "'," & p_contatto & ")"
    da = New OleDbDataAdapter(strSql, p_cnn.ConnectionString)
    ds = New DataSet
    da.Fill(ds, "TA001_ANA_CLI")
    'Recupero ultimo ID inserito
    Dim cmdSql As OleDbCommand = New OleDbCommand("sp_getLastID")
    cmdSql.CommandType = CommandType.StoredProcedure

    'Dim myParm As SqlParameter = cmdSql.Parameters.Item("@ID")
    Dim myParm As New OleDbParameter
    myParm.ParameterName = "@ID"
    myParm.Direction = ParameterDirection.Output
    'myParm.DbType = DbType.UInt32
    cmdSql.Parameters.Add(myParm)
    'p_id = myParm.Value

    Dim myReader As OleDbDataReader = cmdSql.ExecuteReader(CommandBehavior.SingleResult)
    myReader.Close()
    p_id = cmdSql.Parameters("@ID").Value

    p_response = "Operazione effettuata con successo."
    Catch ex As Exception
    p_response = ("Errore: " & ex.Message)
    Finally
    p_cnn.Close()
    'p_cnn = Nothing
    End Try
    End Sub

    Non so più che fare...
    Walter
    ---------------------------------
    Piove... Governo Ladro!?!

  9. #9
    Originariamente inviato da walter.boss
    da = New OleDbDataAdapter(strSql, p_cnn.ConnectionString)
    ds = New DataSet
    da.Fill(ds, "TA001_ANA_CLI")
    'Recupero ultimo ID inserito
    Recuperi l'ultimo id inserito? Ma come ti e' venuto in mente di istanziare un dataadapter mettendo nel suo costruttore un "insert into..." per poi fare un fill (!!!) su un dataset? Per fare un insert nel db i passi e gli oggetti da seguire possono essere i seguenti.
    istanzi un command
    associ al command una connection e se necessario i parametri
    associ al command la stringa sql
    apri la connessione
    esegui il command (in particolare il suo metodo executenonquery)
    chiudi la connessione
    ora mi da' errore di connessione sulla riga in grassetto
    sposta p_cnn.Open()
    prima di effettuare il metodo executereader del command
    Saluti a tutti
    Riccardo

  10. #10
    Abbi pazienza, ma sono un novizio del mondo ASP.NET; il problema della connessione l'ho sistemata, ma ora mi dà un altro problema. Ti posto il codice:

    Public Sub save()
    Dim cmd As New OleDbCommand
    Dim strSql As String

    Try
    strSql = "INSERT INTO TA001_ANA_CLI (" & _
    "D_INS,D_ULT_AGG,C_UTE_INS,C_UTE_AGG,TA001_TA001_I D,C_CLI,T_COG_CLI,T_NOM_CLI,C_IVA," & _
    "T_IND_CLI,T_CIT_CLI,T_PRV_CLI,N_TEL_UNO,N_TEL_DUE ,T_EMA_CLI,T_WEB_CLI,F_CON)" & _
    " VALUES(" & _
    "" & Today() & "," & Today() & ",'""','""'," & p_clienteID & ",'" & p_codice & "','" & p_ragSoc & "','" & p_nome & "','" & p_piva & "'," & _
    "'" & p_Indirizzo & "','" & p_citta & "','" & p_prov & "','" & p_tel1 & "','" & p_tel2 & "','" & p_email & "'," & _
    "'" & p_web & "'," & p_contatto & ")"

    cmd.Connection = p_cnn
    cmd.CommandText = strSql
    p_cnn.Open()
    cmd.ExecuteNonQuery()

    'Recupero ultimo ID inserito
    Dim cmdSql As OleDbCommand = New OleDbCommand("sp_getLastID", p_cnn)
    cmdSql.CommandType = CommandType.StoredProcedure

    Dim myParm As New OleDbParameter
    myParm.ParameterName = "@ID"
    myParm.Direction = ParameterDirection.ReturnValue
    cmdSql.Parameters.Add(myParm)

    Dim myReader As OleDbDataReader = cmdSql.ExecuteReader()
    myReader.Close()
    p_id = cmdSql.Parameters("@ID").Value

    p_response = "Operazione effettuata con successo."
    Catch ex As Exception
    p_response = ("Errore: " & ex.Message)
    Finally
    p_cnn.Close()
    'p_cnn = Nothing
    End Try
    End Sub

    Mi restituisce il seguente errore sulla riga in grassetto:
    Parametro 0: '@ID' di tipo String, dimensione della proprietà Size non valida: 0
    Walter
    ---------------------------------
    Piove... Governo Ladro!?!

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.