Indicatori di parametro (Motore di database)

Gli indicatori di parametro sono supportati dalle API di database ADO, OLE DB e ODBC. Un indicatore di parametro è un punto interrogativo (?) inserito in corrispondenza di un'espressione di input o di output in un'istruzione Transact-SQL. Gli indicatori di parametro consentono di ottimizzare le prestazioni quando la stessa istruzione Transact-SQL viene eseguita più volte con valori diversi per le espressioni di input e di output.

Si supponga, ad esempio, che un utente abbia specificato in un'applicazione cinque simboli di azioni di borsa diverse e che l'applicazione debba chiamare una stored procedure per il recupero della quotazione per ognuna delle cinque azioni. L'applicazione può eseguire le operazioni seguenti:

  • Preparare questa istruzione Transact-SQL:

    EXEC GetQuoteProcedure @StockSymbolParameter = ?
    
  • Associare una variabile di applicazione all'indicatore di parametro (?).

  • Eseguire un ciclo:

    1. Spostare il simbolo di borsa successivo nella variabile associata.

    2. Eseguire l'istruzione per il recupero della quotazione di borsa per tale azione.

Gli indicatori di parametro non vengono solo associati a parametri di stored procedure. Gli indicatori di parametro possono essere utilizzati anche come espressioni di input, ad esempio:

UPDATE HumanResources.Employees
SET Title = ?
WHERE EmployeeID = ?

Gli indicatori di parametro possono essere utilizzati inoltre per associare i parametri di output delle stored procedure e i codici restituiti. Quando in un'applicazione viene eseguita una stored procedure, il provider OLE DB o il driver ODBC sposta i valori di dati dai parametri di output o dai codici restituiti alle variabili associate agli indicatori di parametro.

Ad esempio, un'applicazione può eseguire la procedura seguente, che restituisce un codice integer e un parametro di output di tipo carattere.

  1. Preparare un'istruzione:

    {? = CALL MyProc (?)}
    
  2. Associare il primo indicatore di parametro a una variabile di tipo integer e il secondo indicatore alla matrice di caratteri.

  3. Eseguire l'istruzione.

  4. Recuperare o annullare tutti i set di risultati restituiti dalla stored procedure.

A questo punto il provider Microsoft OLE DB per SQL Server o il driver ODBC di SQL Server avrà inserito il codice restituito e i valori dei parametri di output nelle variabili associate. Microsoft SQL Server restituisce i valori dei parametri di output e il codice restituito nell'ultimo pacchetto restituito al client. Di conseguenza, prima di accedere al codice restituito o ai valori dei parametri di output, l'applicazione deve elaborare o annullare tutti i gruppi di risultati restituiti dalla stored procedure.

Con l'API ADO le stored procedure vengono eseguite in base a una procedura leggermente diversa, Un'applicazione ADO esegue le operazioni seguenti:

  1. Impostazione del tipo di oggetto Command su adCmdStoredProc.

  2. Impostazione del testo del comando solo sul nome della procedura.

  3. Creazione di un insieme Parameters tramite l'associazione di tutti i parametri e codici restituiti alle variabili di applicazione.

  4. Esecuzione dell'oggetto Command.

Gli indicatori di parametro vengono associati a un oggetto di database di un tipo di dati specifico. Se l'applicazione associa un indicatore di parametro a una variabile con tipo di dati diverso da quello dell'oggetto di database associato, è necessario che tramite il provider OLE DB o il driver ODBC venga eseguita una conversione del tipo di dati. Se, ad esempio, in un'applicazione un codice restituito integer viene associato a una matrice di caratteri, il provider OLE DB o il driver ODBC deve convertire i dati di tipo integer del codice restituito in una stringa di caratteri. Per informazioni sulle conversioni dei tipi di dati supportate, vedere la documentazione del provider OLE DB per SQL Server e del driver ODBC di SQL Server.