Procedura: Esecuzione di una stored procedure mediante la sintassi ODBC CALL ed elaborazione di codici restituiti e parametri di output (OLE DB)
Le stored procedure di SQL Server possono includere parametri di output e codici restituiti di tipo integer. I codici restituiti e i parametri di output vengono inviati nell'ultimo pacchetto dal server e non sono pertanto disponibili all'applicazione fino al completo rilascio del set di righe. Se il comando restituisce più risultati, i dati dei parametro di output sono disponibili quando IMultipleResults::GetResult restituisce DB_S_NORESULT o l'interfaccia IMultipleResults viene completamente rilasciata, a seconda dell'evento che si verifica per primo.
Per elaborare i codici restituiti e i parametri di output
Costruire un'istruzione SQL che utilizzi la sequenza di escape ODBC CALL. Nell'istruzione devono essere utilizzati indicatori di parametro per ogni parametro di input, input/output e output e per il valore restituito della procedura, se disponibile. Per i parametri di input, è possibile utilizzare gli indicatori di parametro o specificare i valori a livello di codice.
Creare un set di associazioni (uno per ogni indicatore di parametro) tramite una matrice di strutture DBBINDING.
Creare una funzione di accesso per i parametri definiti utilizzando il metodo IAccessor::CreateAccessor. CreateAccessor crea una funzione di accesso da un set di associazioni.
Completare la struttura DBPARAMS.
Chiamare il comando Execute, rappresentato in questo caso da una chiamata a una stored procedure.
Elaborare il set di righe e rilasciarlo utilizzando il metodo IRowset::Release.
Elaborare il codice restituito e i valori del parametro di output ricevuti dalla stored procedure.
Esempio
In questo esempio viene illustrata l'elaborazione di un set di righe, di un codice restituito e di un parametro di output. I set di risultati non vengono elaborati. Di seguito è riportata la stored procedure di esempio utilizzata dall'applicazione.
USE AdventureWorks2008R2;
GO
DROP PROCEDURE myProc;
GO
CREATE PROCEDURE myProc
@inparam int,
@outparam int OUTPUT
AS
SELECT Color, ListPrice
FROM Production.Product WHERE Size > @inparam;
SELECT @outparam = 100
IF (@outparam > 0)
RETURN 999
ELSE
RETURN 888;
GO
Il codice di esempio completo è disponibile nel file InitializeAndEstablishConnection_A.cpp. È possibile scaricare un archivio contenente l'esempio dalla pagina SQL Server Downloads del sito Web MSDN.
L'esempio è stato sviluppato utilizzando Microsoft Visual C++ 2005.
Nota sulla sicurezza |
---|
Se possibile, utilizzare l'autenticazione di Windows. Se non è disponibile, verrà richiesto agli utenti di immettere le credenziali in fase di esecuzione. Evitare di archiviare le credenziali in un file. Se è necessario rendere persistenti le credenziali, è consigliabile crittografarle utilizzando Win32 Crypto API. |