Parameters
Proprietà
Count
Metodi
Append,
Delete,
Item,
Refresh
|
|
Un insieme Parameters contiene
tutti gli oggetti
Parameter
relativi ad un oggetto
Command.
Utilizzando il metodo
Refresh
sull'insieme
Parameters di un oggetto
Command
vengono recuperate informazioni sui parametri del provider per la stored procedure o
la query con parametri specificata nell'oggetto
Command.
Alcuni provider non supportano chiamate a stored procedure o a query con parametri,
pertanto verrà restituito un errore se si richiama il metodo
Refresh
sull'insieme
Parameters
utilizzando uno di questi provider.
Se non sono stati definiti oggetti
Parameter
personalizzati e si accede all'insieme
Parameters
prima di richiamare il metodo
Refresh,
ADO richiamerà automaticamente il metodo e compilerà l'insieme.
Se si conoscono le proprietà dei parametri associati alla stored procedure o alla
query con parametri da richiamare, è possibile ridurre al minimo le chiamate al provider
al fine di ottimizzare le prestazioni. Utilizzare il metodo
CreateParameter
per creare oggetti
Parameter
con le impostazioni di proprietà appropriate e utilizzare il metodo
Append
per aggiungerli all'insieme
Parameters
. In tal modo sarà possibile impostare e restituire valori di parametri senza richiamare
il provider per ottenere informazioni sui parametri. Se si scrive su un provider che non
fornisce informazioni sui parametri, sarà necessario compilare manualmente l'insieme
Parameters
utilizzando questo metodo in modo da poter utilizzare i parametri. Utilizzare il metodo
Delete
per rimuovere gli oggetti
Parameter
dall'insieme qualora necessario.
Torna alla mappa
|
Metodi
|
|
Append |
Accoda un nuovo oggetto all'insieme.
Sintassi
command.Parameters.Append oggetto
command Rappresenta l'oggetto
Command
su cui si stà operando.
oggetto è il nuovo oggetto
Parameter da aggiungere.
Descrivendo il parametro autonomamente, è possibile ridurre il numero di chiamate al
provider e di conseguenza migliorare le prestazioni quando si utilizzano stored procedure
o query con parametri. È tuttavia necessario conoscere le proprietà dei parametri
associati alla stored procedure o alla query con parametri che si desidera chiamare.
Utilizzare il metodo
Command.CreateParameter
per creare gli oggetti
Parameter
con le proprietà impostate adeguatamente prima di usare
Append.
In questo modo, è possibile impostare e restituire i valori senza dovere chiamare
il provider per le informazioni necessarie. Se si chiama un provider che non fornisce
informazioni relative ai parametri, sarà necessario compilare manualmente l'insieme
Parameters
utilizzando questo metodo per potere utilizzare i parametri.
|
Delete |
Elimina un oggetto dall'insieme.
Sintassi
command.Parameters.Delete indice
command è l'oggetto
Command
su cui si stà operando.
indice è il nome dell'oggetto che si desidera eliminare o il suo numero
ordinale.
Osservazioni
Utilizzando Delete su un insieme si
rimuove uno degli oggetti di quell'insieme.
Quando si chiama Delete è necessario
utilizzare la proprietà
Name
dell'oggetto oppure l'indice dell'insieme corrispondente. Una variabile oggetto non
è un argomento valido.
|
Item |
Restituisce un membro specifico dell'insieme in base al nome o al numero ordinale.
Sintassi
oggetto = command.Parameters.Item( indice )
oggetto è la variabile Parameter
che riceverà l'oggetto richiesto
command è l'oggetto
Command
su cui si stà operando
indice è il nome o il numero ordinale dell'oggetto da reperire.
Osservazioni
Utilizzare Item per reperire un oggetto
specifico nell'insieme. Se non è possibile trovare nell'insieme un oggetto corrispondente
all'argomento indice, si verificherà un errore.
Item è il metodo predefinito per tutti gli
insiemi, quindi è possibile utilizzare anche la forma "ridotta" del metodo.
oggetto = command.Parameters(indice)
|
Refresh |
Aggiorna gli oggetti dell'insieme in modo che corrispondano agli oggetti
specifici disponibili presso il provider.
Sintassi
command.Parameters.Refresh
command è l'oggetto
Command
su cui si stà operando
Osservazioni
Utilizzando Refresh è possibile recuperare
le informazioni sui parametri sul lato provider per la stored procedure o la query con
parametri specificata. L'insieme risulterà vuoto per i provider che non supportano le
chiamate di stored procedure o le query con parametri.
Impostare la proprietà
ActiveConnection
dell'oggetto
Command
su un oggetto
Connection
valido, la proprietà
CommandText
su un comando valido e la proprietà
CommandType
su
adCmdStoredProc prima di chiamare
Refresh.
Se si accede all'insieme
Parameters prima di chiamare
Refresh, il metodo verrà chiamato
automaticamente e l'insieme verrà compilato.
Nota
Se si utilizza Refresh per ottenere informazioni
sui parametri dal provider e tale metodo restituisce uno o più oggetti
Parameter con tipo di dati a lunghezza
variabile, è possibile che venga allocata memoria per i parametri in base alla relativa
dimensione potenziale massima, causando un errore durante l'esecuzione. Per evitare che
si verifichino errori, è necessario impostare esplicitamente la proprietà
Size
per questi parametri prima di chiamare
Execute.
|
Parameter
Proprietà
Attributes,
Direction,
Name,
NumericScale,
Precision,
Size,
Type,
Value
Metodi
AppendChunk
|
|
L'oggetto Parameter
Le informazioni dei singoli parametri possono essere sia scritte che lette attraverso
lo stesso oggetto Parameter. Ci sono quattro tipi di "direzioni" per i singoli
parametri: input, output, input ed output e valore di ritorno.
Un Parameter può servire come parametro di input, come parametro di output che mantiene
delle informazioni o contiene il risultato di una Stored Procedure.
Il metodo Refresh della collection Parameters forza il driver ad aggiornare le
informazioni dei singoli Parametri, tuttavia questo può impiegare molto tempo.
Quando stiamo lavorando con dati "long", il metodo AppendChunk può essere usato per
scrivere dati in blocchi.
Il seguente esempio crea parametri per una Stored Procedure:
La Stored Procedre prende un parametro in input e ritorna un valore in output.
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Dim prm As ADODB.Parameter
' Define a Command object for a stored procedure.
cmd.ActiveConnection = "DSN=pubs;uid=sa"
cmd.CommandText = "myADOParaProc"
cmd.CommandType = adCmdStoredProc
cmd.CommandTimeout = 15
' Set up new parameter for the stored procedure.
Set prm = Cmd.CreateParameter("Type", adChar, adParamInput, 12, "Business")
Cmd.Parameters.Append prm
' Create a record set by executing the command.
Set rs = Cmd.Execute
While (Not rs.EOF)
Debug.Print rs(0)
rs.MoveNext
Wend
Dopo che un parametro è stato specificato, il metodo Append è usato per "attaccare"
l'oggetto alla collection. Quando la Stored Procedure è eseguita, il recordset è
creato e ritornato.
Torna alla mappa
|
Proprietà
|
|
Attributes |
Indica una o più caratteristiche di un oggetto.
Questa proprietà è di lettura/scrittura e il suo valore può corrispondere alla
somma di uno o più dei valori riportati nella seguente tabella:
- adParamSigned
Predefinita. Indica che il parametro accetta valori con segno.
- adParamNullable
Indica che il parametro accetta valori Null.
- adParamLong
Indica che il parametro accetta dati binari lunghi.
Quando si impostano più attributi, è possibile sommare le costanti appropriate.
Se si imposta il valore della proprietà su una somma che contiene costanti
incompatibili, verrà restituito un errore.
|
Direction |
Indica se il parametro è di input, di output o entrambi, oppure se è il valore
restituito da una stored procedure.
I valori possibili sono i seguenti:
- adParamUnknown
Indica se la direzione del parametro è sconosciuta.
- adParamInput
Valore predefinito. Indica un parametro di input.
- adParamOutput
Indica un parametro di output.
- adParamInputOutput
Indica sia un parametro di input che di output.
- adParamReturnValue
Indica un valore restituito.
Osservazioni
Utilizzare la
Direction per specificare il modo in cui un
parametro viene passato a o da una procedura. La proprietà è di lettura/scrittura.
In tal modo è possibile utilizzare provider che non restituiscono queste informazioni
o impostare le informazioni quando non si desidera che venga eseguita un'altra chiamata
al provider per recuperare le informazioni relative ai parametri.
Non tutti i provider sono in grado di determinare la direzione dei parametri nelle
relative stored procedure. In questo caso sarà necessario impostare la proprietà
Direction prima di eseguire la query.
|
Name |
Indica il nome del parametro.
Osservazioni
Utilizzare questa proprietà per assegnare o leggere il nome di un parametro.
Per gli oggetti
Parameter
non ancora aggiunti all'insieme
Parameters, la proprietà
è di lettura/scrittura. Per gli oggetti già aggiunti, la proprietà è di sola
lettura. Non è necessario che i nomi all'interno di un insieme siano univoci.
|
NumericScale |
Indica la scala dei valori numerici.
Il valore letto/impostato indica il numero di cifre decimali in base a cui
verranno risolti i valori numerici.
|
Precision |
Indica il grado di precisione dei valori numerici.
Imposta o restituisce un valore che indica il numero massimo di cifre
utilizzate per rappresentare i valori.
|
Size |
Indica le dimensioni massime di un oggetto Parameter espresse in byte o in caratteri.
Osservazioni
Utilizzare questa proprietà per determinare o per fissare le dimensioni massime dei
valori scritti nella proprietà
Value
del parametro.
Se per un Parameter viene specificato un
tipo di dati di lunghezza variabile (ad esempio tutti i dati di tipo String come
adVarChar), sarà necessario impostare la
proprietà
Size dell'oggetto prima di accodarla
all'insieme
Parameters in modo da evitare che si
verifichi un errore.
Se l'oggetto Parameter è già stato
accodato all'insieme Parameters di un
oggetto
Command
e per i dati è stato specificato il tipo a lunghezza variabile, sarà necessario
impostare la proprietà
Size dell'oggetto Parameter prima di
eseguire l'oggetto
Command
in modo da evitare che si verifichi un errore.
Se si utilizza
Refresh
per ottenere dal provider informazioni sui parametri e vengono restituiti oggetti
Parameter con dati a lunghezza variabile,
in ADO la memoria per i parametri verrà allocata in base alla rispettiva dimensione
potenziale massima causando un eventuale errore durante l'esecuzione.
Per evitare che tale errore si verifichi, è necessario impostare esplicitamente
la proprietà Size per questi parametri
prima di eseguire il comando.
|
Type |
Indica il tipo operativo o il tipo di dato dell'oggetto
Parameter.
Il valore può essere una delle costanti seguenti:
L'indicatore di tipo OLE DB corrispondente è riportato tra parentesi.
Per ulteriori informazioni sui tipi di dati OLE DB, consultare il capitolo 10
e l'appendice A della guida di riferimento per i programmatori di OLE DB.
- adArray
Unito in un operatore logico OR a un altro tipo per indicare che i dati costituiscono
una matrice sicura di quel tipo (DBTYPE_ARRAY).
- adBigInt
Intero con segno da 8 byte (DBTYPE_I8).
- adBinary
Valore binario (DBTYPE_BYTES).
- adBoolean
Valore booleano (DBTYPE_BOOL).
- adByRef
Unito in un operatore logico OR a un altro tipo per indicare che i dati costituiscono
un puntatore a dati di altro tipo (DBTYPE_BYREF).
- adBSTR
Stringa di caratteri a terminazione Null (Unicode) (DBTYPE_BSTR).
- adChar
Valore String (DBTYPE_STR).
- adCurrency
Valore di valuta (DBTYPE_CY). Si tratta di un numero a virgola fissa con quattro cifre
a destra della virgola decimale. È memorizzato in un intero con segno da 8 byte scalato
per 10.000.
- adDate
Valore Date (DBTYPE_DATE). Si tratta di una data memorizzata come Double, la cui parte
intera rappresenta il numero di giorni a partire dal 30 dicembre 1899, mentre la parte
frazionaria rappresenta la frazione di un giorno.
- adDBDate
Valore data (ggmmaaaa) (DBTYPE_DBDATE).
- adDBTime
Valore tempo (oommss) (DBTYPE_DBTIME).
- adDBTimeStamp
Indicatore data/ora (ggmmaaaaoommss più una frazione in miliardesimi) (DBTYPE_DBTIMESTAMP).
- adDecimal
Valore numerico esatto con grado di precisione e di scala fisso (DBTYPE_DECIMAL).
- adDouble
Valore con virgola mobile in precisione doppia (DBTYPE_R8).
- adEmpty
Non è stato specificato alcun valore (DBTYPE_EMPTY).
- adError
Codice di errore a 32 bit (DBTYPE_ERROR).
- adGUID
Identificatore univoco globale (GUID) (DBTYPE_GUID).
- adIDispatch
Puntatore a un'interfaccia Idispatch su un oggetto OLE (DBTYPE_IDISPATCH).
- adInteger
Intero con segno da 4 byte (DBTYPE_I4).
- adIUnknown
Puntatore a un'interfaccia Iunknown su un oggetto OLE (DBTYPE_IUNKNOWN).
- adLongVarBinary
Valore binario lungo (solo oggetto Parameter).
- adLongVarChar
Valore String lungo (solo oggetto Parameter).
- adLongVarWChar
Valore stringa a terminazione Null lungo (solo oggetto Parameter).
- adNumeric
Valore numerico esatto con grado di precisione e di scala fisso (DBTYPE_NUMERIC).
- adSingle
Valore con virgola mobile in precisione semplice (DBTYPE_R4).
- adSmallInt
Intero con segno da 2 byte (DBTYPE_I2).
- adTinyInt
Intero con segno da 1 byte (DBTYPE_I1).
- adUnsignedBigInt
Intero senza segno da 8 byte (DBTYPE_UI8).
- adUnsignedInt
Intero senza segno da 4 byte (DBTYPE_UI4).
- adUnsignedSmallInt
Intero senza segno da 2 byte (DBTYPE_UI2).
- adUnsignedTinyInt
Intero senza segno da 1 byte (DBTYPE_UI1).
- adUserDefined
Variabile definita dall'utente (DBTYPE_UDT).
- adVarBinary
Valore binario (solo oggetto Parameter).
- adVarChar
Valore String (solo oggetto Parameter).
- adVariant
Variant di automazione (DBTYPE_VARIANT).
- adVector
Unito in un operatore logico OR a un altro tipo per indicare che i dati rappresentano
una struttura DBVECTOR, così come viene definita da OLE DB, nella quale sono inclusi
il conteggio degli elementi e un puntatore a dati di altro tipo (DBTYPE_VECTOR).
- adVarWChar
Stringa di caratteri Unicode a terminazione Null (solo oggetto Parameter).
- adWChar
Stringa di caratteri Unicode a terminazione Null (DBTYPE_WSTR).
|
Value |
Indica il valore assegnato all'oggetto Parameter.
Il valore predefinito dipende dalla proprietà
Type.
|
|
Metodi
|
|
AppendChunk |
Accoda dati a un oggetto Parameter di grandi dimensioni in formato testo o binario.
Sintassi
parameter.AppendChunk dati
parameter Oggetto Parameter su cui si opera
dati elemento contenente i dati che si desidera accodare.
Osservazioni
Utilizzare AppendChunk su un oggetto
Parameter per inserirvi dati binari o
letterali lunghi. Nel caso in cui la memoria del sistema sia limitata, sarà
possibile utilizzare AppendChunk per
gestire i valori lunghi in blocchi anzichè integralmente.
Se il bit adFldLong nella proprietà
Attributes è impostato su True, sarà
possibile utilizzare AppendChunk per
quel parametro.
La prima chiamata AppendChunk su un
oggetto Parameter consente di scrivere
dati nel parametro sovrascrivendo i dati esistenti. Le successive chiamate
consentono invece di aggiungere dati ai dati esistenti. Una chiamata
AppendChunk che passa un valore nullo
elimina tutti i dati del parametro.
|
|
|