Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    31

    Recuperare valori output da Stored Proc

    Ciao a tutti, sono abbastanza nuovo nella scrittura di store proc e ho soprattutto qualche difficoltà nella interazione con Asp.

    Io dovrei tirar fuori da una stored procedure un valore (il numero di record inseriti in una tabella), e nel contempo vorrei leggere una variabile che mi fa capire che tutto è andato a posto (il COMMIT è avvenuto).

    Ve la incollo qui sotto.

    create procedure spNewsletter
    @nRec int output

    as
    truncate table SendNewsletter

    declare @esito int

    begin tran
    insert into SendNewsletter (email) (
    select distinct(email) from shop.dbo.shopAcquirenti
    union
    select distinct(email) from dbo.Utenti
    union
    select distinct(email) from dbo.Mail_Nwsl
    )


    if @@error = 0
    commit tran
    select @nRec = count(email) from SendNewsletter
    set @esito= 1
    return @esito


    if @@error <> 0
    rollback tran
    set @esito= 0
    return @esito
    GO


    Ed ecco invece il codice asp:
    Set con = Server.CreateObject("ADODB.Connection")
    con.open = "Provider = SQLOLEDB;Data Source = (local);Initial Catalog = xxx;User ID=xxx"

    set dbComm = Server.CreateObject("ADODB.Command")
    dbComm.ActiveConnection = con

    dbComm.CommandType = 4

    dbComm.CommandText = "spNewsletter"

    dbComm.Parameters.Append dbComm.CreateParameter("esito", 3, 4)
    dbComm.Parameters.Append dbComm.CreateParameter("nRec", 3, 4)

    dbComm.Execute

    if dbComm.Parameters(0).Value = 1 then

    Response.Write "Aggiornamento effettuato correttamente "
    Response.Write "
    Attualmente sono presenti " & dbComm.Parameters(1).Value & " indirizzi email a cui inviare la newsletter"

    else
    Response.Write "Aggiornamento NON effettuato "

    end if



    Se qualcuno potesse controllare la correttezza di quello che ho scritto.... Tengo a precisare che funziona, però mi rimane qualche dubbio... ho la netta impressione che non sia ottimizzata!

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    la sp, a mio parere serve veramente a poco: per sapere quei due valori basta una semplice select; lascia perdere poi le transazioni che per questo script non servono.
    se la sp la usi invece per riempire la tabella, ho due osservazioni
    1) sei sicuro che un indirizzo email compaia al massimo in una sola tabella? se compare in 2 tabelle, te lo trovi due volte
    2) il riempimento della tabella lo farei al momento di spedire la newsletter, quindi casomai lo metterei nella sp che manda via la mail. ed aggiunsterei quanto detto al punto 1
    Tutti vogliono parlare, nessuno sa ascoltare.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    31
    E' proprio il comando UNION che mi consente di 'scremare' le email...
    La newsletter viene inviata da pagina asp, ho creato la stored proc proprio per avere una tabella in cui ogni email fosse univoca, come vedi ho riempito una tabella 'di raccordo' interrogando 3 diverse tabelle di origine.
    Ma le mie perplessità riguardano + che altro l'interazione con asp. Siccome è la prima volta che utilizzo e cerco di recuperare una variabile output da asp, non riesco ancora a capire se la sintassi che ho utilizzato è corretta o migliorabile... :master:

  4. #4
    Utente di HTML.it L'avatar di Gioba66
    Registrato dal
    Jun 2002
    Messaggi
    2,189
    se una mail compare in tutte e tre le tabelle te la ritrovi tre volte
    Tutti vogliono parlare, nessuno sa ascoltare.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    31
    Non è così. Ti incollo qui le istruzioni prese dalla guida di SQL SERVER:

    Sintassi
    { < query specification > | ( < query expression > ) }
    UNION [ ALL ]
    < query specification | ( < query expression > )
    [ UNION [ ALL ] < query specification | ( < query expression > )
    [ ...n ] ]

    UNION

    Specifica che più set di risultati devono essere combinati e restituiti come un singolo set di risultati.

    ALL

    Incorpora tutte le righe nel set di risultati, comprese le righe duplicate. Se viene omesso, le righe duplicate vengono rimosse.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.