Passare parametri a una stored procedure SQL Server
Questo articolo presenta un esempio di passaggio di parametri a una stored procedure SQL Server da Visual FoxPro.
Versione originale del prodotto: Visual FoxPro
Numero KB originale: 247370
Riepilogo
Esistono due modi per passare parametri a una stored procedure usando SQLExec. Un modo, che funziona in tutte le versioni di Visual FoxPro, consiste nel compilare il comando SQL come variabile stringa. Il vantaggio di questo metodo è che è possibile controllare la stringa e vedere esattamente quale comando SQL si sta passando al back-end.
L'altro modo consiste nel passare le variabili Foxpro precedute da punti interrogativi, come in una visualizzazione con parametri. In Visual FoxPro versione 5.0 e versioni successive è possibile ottenere valori dalla stored procedure restituiti come parametri di output.
Ulteriori informazioni
attenersi alla seguente procedura:
Creare due stored procedure in SQL Server (vedere la documentazione online per i passaggi esatti). Mysp_ObjectList accetta semplicemente la tabella SysObjects e restituisce il valore passato una volta per ogni record della tabella. In mysp_GetVersion viene elaborata una procedura normale per trovare la versione del server. SELECT @@VERSION in genere restituisce la versione SQL Server come record in un cursore. In questo caso, il risultato viene assegnato a un parametro di output della stored procedure.
CREATE PROCEDURE mysp_GetVersion @tcVersion Char(200) Output AS SELECT @tcVersion = @@VERSION
CREATE PROCEDURE mysp_ObjectList @tcParm1 CHAR(10) AS SELECT @tcParm1, name FROM sysobjects
Creare un DSN denominato SPParmTest nell'amministratore ODBC, che si collega al database in cui sono state create le procedure precedenti.
Eseguire il codice seguente in Visual FoxPro:
*!* Error-checking is omitted for the purposes of this sample: *!* you should always check the return values from SQL Passthrough calls. lnConn = SQLCONNECT("SPParmTest") lcParm1 = "ReturnThis" lcParm2 = "Then This"*!* This is the first way, involving building a string *!* containing the parameters. lcCommand = "exec mysp_ObjectList '" + lcParm1 + "'" =SQLEXEC(lnConn, lcCommand) BROWSE USE *!* This is the second way, passing the FoxPro variables directly to *!* the SQL command. This will work in 3.0. lcCommand = "exec mysp_ObjectList ?lcParm2" =SQLEXEC(lnConn, lcCommand) BROWSE USE *!* To get a value back from a stored procedure, initialize the *!* output variable first. This won't work under 3.0. lcVersion = SPACE(200) lcCommand = "exec mysp_GetVersion ?@lcVersion" && Note the pass by reference. =SQLEXEC(lnConn, lcCommand)?lcVersion =SQLDISCONNECT(lnConn) && clean up.