Utilizzo dei set di risultati nell'attività Esegui SQL
La restituzione del set di risultati all'attività Esegui SQL in un pacchetto di Integration Services dipende dal tipo di comando SQL utilizzato dall'attività. Se si utilizzano ad esempio le istruzioni SELECT, viene in genere restituito un set di risultati, mentre questo non avviene per le istruzioni INSERT.
Anche il contenuto del set di risultati varia in base al comando SQL. Il set di risultati restituito da un'istruzione SELECT può ad esempio contenere zero, una o più righe. Il set di risultati di un'istruzione SELECT che restituisce un conteggio o una somma contiene tuttavia una sola riga.
Per utilizzare i set di risultati in un'attività Esegui SQL non è sufficiente sapere se il comando SQL restituisce un set di risultati né conoscere il contenuto di tale set di risultati. Sono previsti ulteriori requisiti e linee guida per utilizzare correttamente i set di risultati nell'attività Esegui SQL. Nella parte restante di questo argomento vengono illustrati tali requisiti e linee guida:
Impostazione del tipo di un set di risultati
Popolamento di una variabile con un set di risultati
Configurazione dei set di risultati nell'editor attività Esegui SQL
Impostazione del tipo di un set di risultati
L'attività Esegui SQL supporta i tipi di set di risultati seguenti:
Se la query non restituisce risultati, verrà utilizzato il set di risultati Nessuno. Questo set di risultati può essere utilizzato ad esempio per le query che aggiungono, modificano ed eliminano record in una tabella.
Se la query restituisce una sola riga, verrà utilizzato il set di risultati Riga singola. Questo set di risultati può ad esempio essere utilizzato per un'istruzione SELECT che restituisce un conteggio o una somma.
Se la query restituisce più righe, verrà utilizzato il set di risultati Set dei risultati completo. Questo set di risultati può essere utilizzato ad esempio per un'istruzione SELECT che recupera tutte le righe di una tabella.
Se la query restituisce un set di risultati in formato XML, verrà utilizzato il set di risultati XML. Questo set di risultati può essere utilizzato ad esempio per un'istruzione SELECT che include una clausola FOR XML.
Se nell'attività Esegui SQL viene utilizzato il Set dei risultati completo e la query restituisce più set di righe, l'attività restituisce solo il primo di tali set. Se questo set di righe genera un errore, l'attività segnala l'errore. Se altri set di righe generano errori, l'attività non li segnala.
A seconda del tipo di gestione connessione, i valori restituiti dall'istruzione SQL che non sono stringhe potrebbero essere convertiti in modo implicito o esplicito in stringhe. Il tipo di gestione connessione ADO o ODBC converte in modo implicito i valori restituiti in stringhe. Il tipo di gestione connessione OLE DB converte in modo esplicito i valori restituiti dei tipi di dati DBTYPE_I8, DBTYPE_UI8, DBTYPE_NUMERIC, DBTYPE_GUID e DBTYPE_BYTES in stringhe. Il tipo di gestione connessione ADO.NET, tuttavia, non converte i valori restituiti in stringhe.
Popolamento di una variabile con un set di risultati
Se il set di risultati restituito da una query è una riga singola, un set di righe o di tipo XML, sarà possibile associarlo a una variabile definita dall'utente.
Se il tipo di set di risultati è Riga singola, è possibile associare una colonna nel risultato restituito a una variabile utilizzando il nome della colonna come nome del set di risultati oppure utilizzare la posizione ordinale della colonna nell'elenco di colonne come nome del set di risultati. Il nome del set di risultati per la query SELECT Color FROM Production.Product WHERE ProductID = ?, ad esempio, potrebbe essere Color o 0. Se la query restituisce più colonne e si desidera accedere ai valori in tutte le colonne, è necessario associare ogni colonna a una variabile diversa. Se si mappano le colonne alle variabili utilizzando numeri come nomi del set di risultati, i numeri riflettono l'ordine in cui le colonne vengono visualizzate nell'elenco di colonne della query. Nella query SELECT Color, ListPrice, FROM Production.Product WHERE ProductID = ?, ad esempio, viene utilizzato 0 per la colonna Color e 1 per la colonna ListPrice. La possibilità di utilizzare un nome di colonna come nome di un set di risultati dipende dal provider per il quale l'attività è configurata. Non tutti i provider consentono l'utilizzo di nomi di colonna.
Alcune query che restituiscono un singolo valore non includono nomi di colonna. L'istruzione SELECT COUNT (*) FROM Production.Product non restituisce ad esempio alcun nome di colonna. Per accedere al risultato restituito è possibile utilizzare la posizione ordinale, 0, come nome del risultato. Affinché sia possibile accedere al risultato restituito tramite il nome di colonna, la query deve includere una clausola AS <alias name> che specifichi un nome di colonna. Nell'istruzione SELECT COUNT (*)AS CountOfProduct FROM Production.Product è specificato il nome di colonna CountOfProduct. Per accedere alla colonna del risultato restituito è quindi possibile utilizzare il nome di colonna, CountOfProduct, o la posizione ordinale, 0.
Se il set di risultati è di tipo Set dei risultati completo o XML, sarà necessario utilizzare 0 come nome del set di risultati.
Quando si mappa una variabile a un set di risultati con il tipo di set di risultati Riga singola, la variabile deve avere un tipo di dati compatibile con quello della colonna contenuta nel set di risultati. Un set di risultati che contiene, ad esempio, una colonna con un tipo di dati String non può eseguire il mapping a una variabile con un tipo di dati numerico. Un set di risultati XML può eseguire il mapping solo a una variabile con il tipo di dati String o Object. Se la variabile ha il tipo di dati String, l'attività Esegui SQL restituisce una stringa e l'origine XML può utilizzare i dati XML. Se la variabile ha il tipo di dati Object, l'attività Esegui SQL restituisce un oggetto DOM (Document Object Model). Un Set dei risultati completo deve eseguire il mapping a una variabile con il tipo di dati Object. Il risultato restituito è un oggetto set di righe. È possibile scrivere attività personalizzate che navigano nell'oggetto set di righe e accedono alle informazioni relative alle colonne e ai dati contenuti.
Nella tabella seguente è disponibile un riepilogo dei tipi di dati delle variabili che è possibile mappare a set di risultati.
Tipo di set di risultati |
Tipo di dati della variabile |
Tipo di oggetto |
---|---|---|
A riga singola |
Qualunque tipo compatibile con la colonna del tipo nel set di risultati. |
Non applicabile |
Set dei risultati predefinito |
Object |
Se l'attività utilizza una gestione connessione nativa, incluse le gestioni connessioni ADO, OLE DB, Excel e ODBC, l'oggetto restituito è un oggetto Recordset ADO. Se l'attività utilizza una gestione connessione gestita, ad esempio la gestione connessione ADO.NET, l'oggetto restituito è un oggetto System.Data.DataSet. |
XML |
String |
String |
XML |
Object |
Se l'attività utilizza una gestione connessione nativa, incluse le gestioni connessioni ADO, OLE DB, Excel e ODBC, l'oggetto restituito è un oggetto MSXML6.IXMLDOMDocument. Se l'attività utilizza una gestione connessione gestita, ad esempio la gestione connessione ADO.NET, l'oggetto restituito è un oggetto System.Xml.XmlDocument. |
La variabile può essere definita nell'ambito dell'attività Esegui SQL o nell'ambito del pacchetto. Se la variabile viene definita nell'ambito del pacchetto, il set di risultati sarà disponibile per altre attività e contenitori all'interno del pacchetto e per altri pacchetti eseguiti dalle attività Esegui pacchetto o Esegui pacchetto DTS 2000.
Quando si esegue il mapping di una variabile a un set di risultati a riga singola, è possibile che vengano convertiti in stringhe i valori restituiti dall'istruzione SQL che non sono costituiti da stringhe. Il tipo di gestione connessione utilizzata determina l'esecuzione della conversione e il tipo di conversione, implicito o esplicito:
Con una gestione connessione ADO.NET, la conversione non viene eseguita.
Con una gestione connessione ADO o ODBC, la conversione viene eseguita in modo implicito.
Con una gestione connessione OLE DB o Excel, vengono convertiti in stringhe in modo esplicito i seguenti tipi di valori: DBTYPE_NUMERIC, DBTYPE_GUID e DBTYPE_BYTES.
Per informazioni sul caricamento di un set di risultati in una variabile, vedere Procedura: Mapping di set di risultati a variabili in un'attività Esegui SQL.
Configurazione dei set di risultati nell'attività Esegui SQL
Per ulteriori informazioni sulle proprietà dei set di risultati che è possibile impostare in Progettazione SSIS, fare clic sull'argomento seguente:
Per ulteriori informazioni sull'impostazione di queste proprietà in Progettazione SSIS, fare clic sull'argomento seguente:
Risorse esterne
- Esempio CodePlex Execute SQL Parameters and Result Sets sul sito Web all'indirizzo msftisprodsamples.codeplex.com
|