Passer des paramètres à une procédure stockée SQL Server

Cet article présente un exemple de passage de paramètres à une procédure stockée SQL Server à partir de Visual FoxPro.

Version d’origine du produit : Visual FoxPro
Numéro de la base de connaissances d’origine : 247370

Résumé

Il existe deux façons de passer des paramètres à une procédure stockée à l’aide de SQLExec. L’une des façons, qui fonctionne sur toutes les versions de Visual FoxPro, consiste à générer la commande SQL en tant que variable de chaîne. L’avantage de cette méthode est que vous pouvez case activée la chaîne et voir exactement la commande SQL que vous passez au serveur principal.

L’autre méthode consiste à passer les variables Foxpro précédées de points d’interrogation, comme dans une vue paramétrable. Dans Visual FoxPro version 5.0 et versions ultérieures, cela vous permet d’obtenir des valeurs de la procédure stockée retournées en tant que paramètres de sortie.

Informations supplémentaires

Procédez comme suit :

  1. Créez deux procédures stockées dans SQL Server (consultez la documentation en ligne pour connaître les étapes exactes). Mysp_ObjectList prend simplement la table SysObjects et retourne la valeur que vous passez une fois pour chaque enregistrement de la table. Dans mysp_GetVersion, nous expliquons un peu la procédure normale de recherche de la version du serveur. SELECT @@VERSION retourne normalement la version SQL Server en tant qu’enregistrement dans un curseur. Ici, nous affectons ce résultat à un paramètre de sortie de la procédure stockée.

    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
    
  2. Créez un DSN appelé SPParmTest dans l’administrateur ODBC, qui établit un lien vers la base de données dans laquelle vous avez créé les procédures ci-dessus.

  3. Exécutez le code suivant dans 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.