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 verra' 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 richiamera' automaticamente il metodo e compilera' l'insieme.
Se si conoscono le proprieta' dei parametri associati alla stored
procedure o alla query con parametri da richiamare, e' 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 proprieta' appropriate e utilizzare il metodo
Append
per aggiungerli all'insieme
Parameters.
In tal modo sara' 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,
sara' 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
Count
|
Indica il numero di oggetti contenuti nell'insieme. e' una proprieta'
di sola lettura. Se il valore restituito e' pari a 0, l'insieme e'
vuoto e non contiene nessun oggetto.
Nota:
La numerazione degli oggetti nell'insieme parte da 0 e non da 1.
|
Append
|
Accoda un nuovo oggetto all'insieme.
Sintassi
command.Parameters.Append oggetto
command Rappresenta l'oggetto
Command
su cui si sta' operando.
oggetto e' il nuovo oggetto
Parameter da aggiungere.
Descrivendo il parametro autonomamente, e' possibile ridurre il
numero di chiamate al provider e di conseguenza migliorare le
prestazioni quando si utilizzano stored procedure o query con
parametri. E' tuttavia necessario conoscere le proprieta' 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 proprieta' impostate adeguatamente prima di usare
Append.
In questo modo, e' 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,
sara' 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 e' l'oggetto
Command
su cui si sta' operando.
indice e' 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 e' necessario
utilizzare la proprieta'
Name
dell'oggetto oppure l'indice dell'insieme corrispondente. Una variabile
oggetto non e' 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 e' la variabile Parameter
che ricevera' l'oggetto richiesto
command e' l'oggetto
Command
su cui si sta' operando
indice e' il nome o il numero ordinale dell'oggetto da
reperire.
Osservazioni
Utilizzare Item per reperire
un oggetto specifico nell'insieme. Se non e' possibile trovare
nell'insieme un oggetto corrispondente all'argomento indice,
si verifichera' un errore.
Item e' il metodo predefinito
per tutti gli insiemi, quindi e' 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 e' l'oggetto
Command
su cui si sta' operando
Osservazioni
Utilizzando Refresh e' possibile
recuperare le informazioni sui parametri sul lato provider per la
stored procedure o la query con parametri specificata. L'insieme
risultera' vuoto per i provider che non supportano le chiamate di
stored procedure o le query con parametri.
Impostare la proprieta'
ActiveConnection dell'oggetto
Command su un oggetto
Connection
valido, la proprieta'
CommandText
su un comando valido e la proprieta'
CommandType su adCmdStoredProc prima di chiamare
Refresh.
Se si accede all'insieme
Parameters prima di chiamare
Refresh, il metodo verra' chiamato
automaticamente e l'insieme verra' compilato.
Nota
Se si utilizza Refresh per
ottenere informazioni sui parametri dal provider e tale metodo
restituisce uno o piu' oggetti Parameter con tipo di dati a lunghezza
variabile, e' 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,
e' necessario impostare esplicitamente la proprieta'
Size
per questi parametri prima di chiamare
Execute.
|
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 puo' 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 puo'
impiegare molto tempo.
Quando stiamo lavorando con dati "long", il metodo AppendChunk
puo' 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 e' stato specificato, il metodo Append
e' usato per "attaccare" l'oggetto alla collection. Quando la Stored
Procedure e' eseguita, il recordset e' creato e ritornato.
Torna alla mappa
Attributes
|
Indica una o piu' caratteristiche di un oggetto.
Questa proprieta' e' di lettura/scrittura e il suo valore puo'
corrispondere alla somma di uno o piu' 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 piu' attributi, e' possibile sommare le costanti
appropriate. Se si imposta il valore della proprieta' su una somma
che contiene costanti incompatibili, verra' restituito un errore.
|
Direction
|
Indica se il parametro e' di input, di output o entrambi, oppure se
e' il valore restituito da una stored procedure.
I valori possibili sono i seguenti:
- adParamUnknown
Indica se la direzione del parametro e' 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
proprieta' e' di lettura/scrittura. In tal modo e' 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 sara'
necessario impostare la
Direction prima di eseguire
la query.
|
Name
|
Indica il nome del parametro.
Osservazioni
Utilizzare questa proprieta' per assegnare o leggere il nome di
un parametro. Per gli oggetti Parameter non ancora aggiunti all'insieme
Parameters, la proprieta'
e' di lettura/scrittura. Per gli oggetti gia' aggiunti, la proprieta'
e' di sola lettura. Non e' 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 proprieta' per determinare o per fissare le
dimensioni massime dei valori scritti nella proprieta'
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), sara' necessario
impostare la proprieta'
Size dell'oggetto prima di
accodarla all'insieme
Parameters in modo da evitare
che si verifichi un errore.
Se l'oggetto Parameter e' gia' stato
accodato all'insieme Parameters di un
oggetto
Command
e per i dati e' stato specificato il tipo a lunghezza variabile,
sara' necessario impostare la proprieta'
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
verra' allocata in base alla rispettiva dimensione potenziale massima
causando un eventuale errore durante l'esecuzione.
Per evitare che tale errore si verifichi, e' necessario impostare
esplicitamente la proprieta' Size per questi parametri prima di eseguire il
comando.
|
Type
|
Indica il tipo operativo o il tipo di dato dell'oggetto
Parameter.
Il valore puo' essere una delle costanti seguenti:
L'indicatore di tipo OLE DB corrispondente e' 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. E'
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 piu' 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 e' 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, cosi' 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
proprieta' Type.
|
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,
sara' possibile utilizzare AppendChunk per gestire i valori lunghi in blocchi
anziche' integralmente.
Se il bit adFldLong nella proprieta'
Attributes e' impostato su True,
sara' 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.
|
|