Procedimiento almacenado de cómo pasar parámetros a un servidor SQL Server

Seleccione idioma Seleccione idioma
Id. de artículo: 247370 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

Hay dos formas de pasar parámetros a un procedimiento almacenado mediante SQLExec. Una, que funciona a través de todas las versiones de Visual FoxPro, consiste en generar el comando SQL como una variable de cadena. La ventaja de este método es que puede comprobar la cadena y ver exactamente qué comandos SQL se pasa a los servicios de fondo.

La otra forma consiste en pasar las variables de FoxPro precedidas por signos de interrogación, como en una vista con parámetros. En Visual FoxPro versión 5.0 y versiones posteriores, permite obtener valores desde el procedimiento almacenado que se devuelven como parámetros de salida.

Más información

Siga estos pasos:
  1. Crear dos procedimientos almacenados en SQL Server (consulte los libros en pantalla para los pasos exactos). Mysp_ObjectList simplemente toma la tabla SysObjects y devuelve el valor que pasa una vez para cada registro en la tabla. En mysp_GetVersion, podemos ampliar un poco en el procedimiento normal para buscar la versión del servidor. SELECT @@ VERSION normalmente devuelve la versión de SQL Server como un registro en un cursor. Aquí, asignamos ese resultado a un parámetro de salida del procedimiento almacenado.
    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. Crear un DSN denominado SPParmTest en el Administrador de ODBC que se vincula a la base de datos que creó los procedimientos anteriores.
  3. Ejecute el siguiente código en 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.
    					

Referencias

Para obtener información adicional en la llamada de procedimientos almacenados, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
156034Cómo recuperar información de SQL Server en filas afectadas
177056PRB: Nombre de variable de parámetros devueltos para SQL Server produce un error
114787Cómo ejecutar un procedimiento almacenado en SQL Server

(c) Microsoft Corporation 1999, Reservados todos los derechos. Contribuciones por Garrett Fitzgerald, Microsoft Corporation.

Propiedades

Id. de artículo: 247370 - Última revisión: lunes, 24 de enero de 2005 - Versión: 3.4
La información de este artículo se refiere a:
  • Microsoft Visual FoxPro 3.0b Standard Edition
  • Microsoft Visual FoxPro 5.0 Standard Edition
  • Microsoft Visual FoxPro 5.0a
  • Microsoft Visual FoxPro 6.0 Professional Edition
  • Microsoft Visual FoxPro 7.0 Professional Edition
  • Microsoft Visual FoxPro 8.0 Professional Edition
  • Microsoft Visual FoxPro 9.0 Professional Edition
Palabras clave: 
kbmt kbclientserver kbdatabase kbhowto kbsqlprog KB247370 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 247370

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com