Compartir a través de


Crear una consulta parametrizada

Así como puede crear vistas parametrizadas mediante el Diseñador de vistas o el lenguaje, también puede crear una consulta de paso a través de SQL parametrizada.

Para crear una consulta parametrizada con paso a través de SQL

  • Coloque un signo de cierre de interrogación (?) antes de un parámetro de Visual FoxPro y, a continuación, incluya el parámetro en una cadena SQL que envíe con SQLEXEC( ).

    El parámetro que suministre se evalúa como expresión de Visual FoxPro y el valor se envía como parte de la instrucción SQL de la vista. Si hay errores en la evaluación, Visual FoxPro le pide el valor del parámetro.

    Sugerencia   Si el parámetro es una expresión, escriba la expresión del parámetro entre paréntesis. Esto asegura que toda la expresión se evalúa como parte del parámetro.

    Por ejemplo, si tiene la tabla customer de la base de datos Testdata en un servidor remoto, el código siguiente crea una consulta parametrizada que limita la vista a aquellos clientes cuyo país coincida con el valor suministrado para el parámetro ?cCountry:

    ? SQLEXEC(1,'SELECT * FROM customer WHERE customer.country = ?cCountry')
    

Si desea pedir al usuario el valor de un parámetro, escriba la expresión de parámetro entre comillas. Para obtener más información acerca de la petición del valor de un parámetro, vea Crear vistas.

El origen de datos ODBC no acepta parámetros en las siguientes ubicaciones:

  • En una lista de tablas o campos SELECT.
  • Como las dos expresiones de un predicado de comparación.
  • Como los dos operandos de un operador binario.

Un origen de datos ODBC no aceptará parámetros en las siguientes ubicaciones en las cláusulas WHERE o HAVING de una instrucción SELECT:

  • Como los operandos primero y segundo de un predicado BETWEEN.
  • Como los operandos primero y tercero de un predicado BETWEEN.
  • Como la expresión y el primer valor de un predicado IN.
  • Como el operando de un operador unario + o -.
  • Como el argumento de una función SET.

Usar parámetros de entrada/salida de SQL Server

Puede usar parámetros de entrada/salida para pasar valores entre Visual FoxPro y SQL Server. Los parámetros de entrada/salida sólo están disponibles mediante paso a través de SQL; no se pueden usar en vistas.

La tabla siguiente proporciona un ejemplo del uso de parámetros de entrada/salida para pasar valores desde Visual FoxPro a un procedimiento almacenado de SQL Server y devolver el resultado a una variable de Visual FoxPro.

Usar parámetros de entrada/salida en un procedimiento almacenado de SQL Server

Código Comentarios
resultCode = SQLExec(connHand,
   "CREATE PROCEDURE sp_test;
      @mult1 int, @mult2 int, @result int;
   OUTPUT AS SELECT
      @result = @mult1 * @mult2")
Crea un procedimiento almacenado, sp_test, que multiplica dos variables (mult1 y mult2) y, a continuación, almacena la cantidad resultante en la variable result.
outParam = 0
Crea una variable de Visual FoxPro para recibir el valor del parámetro de salida cuando se pasa desde SQL Server a Visual FoxPro.
resultCode = SQLExec(connHand, ;
"{CALL sp_test (2, 4, ?@outParam)}")
Ejecuta el procedimiento almacenado en SQL Server, pasando los valores ‘2’ y ‘4’ para que se multipliquen en el procedimiento almacenado.
? "outParam =", outParam  && the value is 8
Muestra el valor del parámetro de salida.

Definir parámetros

La sintaxis para los parámetros de salida es:

?@parameter_name

Cuando implemente parámetros de entrada/salida, defina las variables de Visual FoxPro que desee incluir en su comando de paso a través de SQL antes de usar las variables en la instrucción SQL. Para enviar y recibir correctamente información con parámetros de entrada/salida, debe definir:

  • Un parámetro de procedimiento almacenado, con un tipo de salida, que devuelva un valor.

    Por ejemplo, si el parámetro del procedimiento almacenado es @result, debe asignar un tipo de salida, como int, a @result y debe asignar un valor a @result.

  • Una expresión de parámetro de salida (**@**parameter_name) que se evalúa a una variable existente de Visual FoxPro.

    Por ejemplo, si la expresión de parámetro de salida es ?@outParam, la aplicación debe tener definida la variable outParam de Visual FoxPro.

    Nota   Si no usa un parámetro de salida, en Visual FoxPro o en el procedimiento almacenado, o no define una variable de Visual FoxPro para recibir el valor devuelto, el parámetro de Visual FoxPro no cambiará.

Convertir tipos de datos

Visual FoxPro convierte valores devueltos de variable siguiendo las reglas siguientes:

  • Las variables de tipo de datos de coma flotante (N, F, B) se convierten en N.
  • El tamaño de presentación se establece como 20.
  • La configuración decimal se establece como la actual. La configuración decimal sólo afecta al formato de presentación predeterminado y no afecta a la precisión decimal.
  • Las variables de fecha y hora (D, T) se convierten a variables de hora (T).

No puede usar tipos de datos Memo, General, Picture o NULL en parámetros de entrada/salida.

Si la aplicación usa campos de cursor como parámetros, Visual FoxPro intentará convertir el resultado otra vez al tipo de datos original.

Devolver valores de parámetros

Los parámetros de entrada/salida sólo están disponibles después de que se ha buscado el último conjunto de resultados de una instrucción. Esto significa que los valores de entrada/salida se devuelven a Visual FoxPro sólo después de que:

  • SQLEXEC( ) devuelva (1) en modo de procesamiento por lotes;

    –O bien–

  • SQLMORERESULTS( ) devuelve (2) si no está en modo de procesamiento por lotes.

Si la instrucción SQLEXEC( ) solicita múltiples conjuntos de resultados, los parámetros de salida sólo estarán disponibles con seguridad después de que se haya buscado el último conjunto de resultados en el origen de datos.

Vea también

Devolver múltiples conjuntos de resultados | Crear combinaciones externas con datos remotos | Usar la tecnología de paso a través de SQL | Implementar una aplicación cliente-servidor | Diseñar aplicaciones cliente-servidor | Upsizing de las bases de datos de Visual FoxPro | Crear vistas