Parametri dei comandi di SQL Server Native Client

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure azure Synapse Analytics Analytics Platform System (PDW)

I parametri sono contrassegnati nel testo dei comandi dal carattere del punto interrogativo. L'istruzione SQL seguente è ad esempio contrassegnata per un solo parametro di input:

{call SalesByCategory('Produce', ?)}  

Per migliorare le prestazioni riducendo il traffico di rete, il provider OLE DB di SQL Server Native Client non deriva automaticamente le informazioni sui parametri a meno che non venga chiamato ICommandWithParameters::GetParameterInfo o ICommandPrepare::P repare prima di eseguire un comando. Ciò significa che il provider OLE DB di SQL Server Native Client non esegue automaticamente:

  • Verificare la correttezza del tipo di dati specificato con ICommandWithParameters::SetParameterInfo.

  • Eseguire il mapping tra il valore DBTYPE specificato nelle informazioni relative all'associazione della funzione di accesso e il tipo di dati di SQL Server corretto per il parametro.

Se si specificano tipi di dati non compatibili con il tipo di dati di SQL Server del parametro, è possibile che vengano ricevuti errori o che si verifichi una perdita della precisione con entrambi i metodi.

Per evitare che ciò si verifichi, è necessario:

  • Assicurarsi che pwszDataSourceType corrisponda al tipo di dati di SQL Server per il parametro se si specifica ICommandWithParameters::SetParameterInfo a livello di codice.

  • Assicurarsi che il valore DBTYPE associato al parametro sia dello stesso tipo del tipo di dati SQL Server per il parametro in caso di specifica di una funzione di accesso a livello di codice.

  • Codificare l'applicazione per chiamare ICommandWithParameters::GetParameterInfo in modo che il provider possa ottenere dinamicamente i tipi di dati di SQL Server dei parametri. Si noti che ciò determina un round trip aggiuntivo del server.

Nota

Il provider non supporta la chiamata a ICommandWithParameters::GetParameterInfo per le istruzioni UPDATE o DELETE di SQL Server contenenti una clausola FROM, per le istruzioni SQL dipendenti da una sottoquery contenente parametri, per le istruzioni SQL che contengono marcatori di parametro in entrambe le espressioni di un predicato di confronto, LIKE o quantificato oppure per le query in cui uno dei parametri è il parametro di una funzione. In caso di elaborazione di un batch di istruzioni SQL, il provider non supporta inoltre la chiamata a ICommandWithParameters::GetParameterInfo per i marcatori di parametro nelle istruzioni dopo la prima istruzione del batch. I commenti (/* */) non sono consentiti nel comando Transact-SQL.

Il provider OLE DB di SQL Server Native Client supporta i parametri di input nei comandi dell'istruzione SQL. Nei comandi di chiamata di routine, il provider OLE DB di SQL Server Native Client supporta parametri di input, output e input/output. I valori dei parametri di output vengono restituiti all'applicazione in fase di esecuzione (solo se non sono stati restituiti set di righe) o quando tutti i set di righe restituiti vengono esauriti dall'applicazione. Per assicurarsi che i valori restituiti siano validi, usare IMultipleResults per applicare l'utilizzo dei set di righe.

I nomi dei parametri delle stored procedure non devono essere specificati in una struttura DBPARAMBINDINFO. Usare NULL per il valore del membro pwszName per indicare che il provider OLE DB di SQL Server Native Client deve ignorare il nome del parametro e usare solo il numero ordinale specificato nel membro rgParamOrdinals di ICommandWithParameters::SetParameterInfo. Se il testo del comando contiene parametri denominati e senza nome, tutti i parametri senza nome devono essere specificati prima di quelli denominati.

Se viene specificato il nome di un parametro di stored procedure, il provider OLE DB di SQL Server Native Client controlla il nome per assicurarsi che sia valido. Il provider OLE DB di SQL Server Native Client restituisce un errore quando riceve un nome di parametro errato dal consumer.

Nota

Per esporre il supporto per i tipi XML e definiti dall'utente (UDT), il provider OLE DB di SQL Server Native Client implementa una nuova interfaccia ISSCommandWithParameters .

Vedi anche

Comandi