Como enviar parámetros a un Stored Procedure

1 comentario

Hay dos formas de enviar parámetros a un stored procedure si usas Visual FoxPro:

1ª forma:

Private pcMiVar1, pcMiVar2, pnMiVar3

pcMiVar1 = "Asunción"
pcMiVar2 = "Paraguay"
pnMiVar3 = 800000

lcComando = "EXECUTE PROCEDURE MiStoredProcedure(?pcMiVar1, ?pcMiVar2, ?pnMiVar3)"
lnResultado = SQLExec(gnHandle, lcComando)

Aquí, se usa el símbolo de interrogación y luego el nombre de la variable que se desea enviar. Esa variable debe ser PRIVATE o PUBLIC (aunque supongo que sabrás que usar variables públicas no es recomendable).

2ª forma:

Local lcMiVar1, lcMiVar2, lnMiVar3

lcMiVar1 = "Asunción"
lcMiVar2 = "Paraguay"
lnMiVar3 = 6500000

lcComando = "EXECUTE PROCEDURE MiStoredProcedure(" + lcMiVar1 + ", " + lcMiVar2 + ", " + Transform(lnMiVar3) + ")"
lnResultado = SQLExec(gnHandle, lcComando)

Aquí, se concatenan las variables. Estas variables pueden ser LOCAL (como en este ejemplo), PRIVATE o PUBLIC.

¿Cuál de las dos formas es la preferible?

La 1ª es mejor porque sería más difícil para un curioso averiguar el valor de los parámetros que se están enviando.

Hay programas que los hackers usan para ver lo que se está enviando en la red, cuanto más difícil les pongas la tarea, mejor para la seguridad de tus datos.

 

 

.

Ejemplo Nº 032 – Mostrando los datos ordenados

1 comentario

Muchas veces queremos que los datos se muestren ordenados según algún orden en particular, que puede ser el Código, el Nombre, la Fecha, el Importe, etc.

Para conseguirlo hacemos uso de la cláusula ORDER BY

SELECT
   PRD_CODIGO,
   PRD_NOMBRE,
   PRD_PROCED,
   PRD_PREVTA
FROM
   PRODUCTOS
ORDER BY
   PRD_NOMBRE

Este SELECT nos mostrará a los productos ordenados alfabéticamente por sus nombres.

En lugar de decirle que ordene por una columna podemos decirle que ordene por la posición que esa columna tiene en el SELECT como vemos a continuación:

SELECT
   PRD_CODIGO,
   PRD_NOMBRE,
   PRD_PROCED,
   PRD_PREVTA
FROM
   PRODUCTOS
ORDER BY
   2

El resultado de este SELECT será exactamente igual al primero pero ahora usamos el número 2 en lugar de la columna PRD_NOMBRE. ¿Y por qué usamos el número 2? porque esa es la posición de la columna PRD_NOMBRE en el SELECT.

En la cláusula ORDER BY podemos tener varias columnas, no necesariamente una columna:

SELECT
   PRD_CODIGO,
   PRD_NOMBRE,
   PRD_PROCED,
   PRD_PREVTA
FROM
   PRODUCTOS
ORDER BY
   PRD_PROCED,
   PRD_NOMBRE

Aquí el SELECT nos mostrará a los productos ordenados por PRD_PROCED (o sea, el país de procedencia) y luego por el nombre del producto.

Igual que antes, si lo deseamos podemos usar las posiciones de las columnas en lugar de usar el nombre de las columnas, como:

ORDER BY
   3, 2

 

IMPORTANTE:

Se puede ordenar por cualquier columna, sea ésta de tipo carácter, de tipo numérico, de tipo fecha, etc. La única excepción son las columnas de tipo BLOB, no se puede ordenar por ellas.

.

Ejemplo Nº 031 – Usando comodines en las cadenas alfanuméricas (y 5)

1 comentario

SELECT
   PRD_CODIGO,
   PRD_NOMBRE,
   PRD_PREVTA
FROM
   PRODUCTOS
WHERE
   PRD_NOMBRE LIKE '__S%'

Este SELECT mostrará a todos los productos cuyos dos primeros caracteres pueden ser cualesquiera (porque hay dos guiones bajos antes de la S), el tercer carácter debe ser una S sí o sí, y los demás caracteres pueden ser cualesquiera.

Se usa un guión bajo para indicar que en esa posición puede haber cualquier carácter y se usa un símbolo de porcentaje para indicar que en esa posición y en las siguientes puede haber cualquier carácter.

Ejemplo Nº 029 – Usando comodines en las cadenas alfanuméricas (3)

1 comentario

También se pueden usar comodines en las cadenas alfanuméricas para no mostrar los caracteres que cumplen con la condición.

SELECT
   PRD_CODIGO,
   PRD_NOMBRE,
   PRD_PREVTA
FROM
   PRODUCTOS
WHERE
   PRD_NOMBRE NOT LIKE '%E%'

Este SELECT mostrará los productos que no tienen la letra E en sus nombres.

Ejemplo Nº 030 – Usando comodines en las cadenas alfanuméricas (4)

1 comentario

SELECT
   PRD_CODIGO,
   PRD_NOMBRE,
   PRD_PREVTA
FROM
   PRODUCTOS
WHERE
   PRD_NOMBRE LIKE '_R%'

El guión bajo significa: “aquí puede haber cualquier carácter, pero solamente un carácter”.

En este ejemplo: el primer carácter puede ser cualquiera (porque hay un guión bajo al principio), luego debe haber una R sí o sí, y luego puede haber cualquier cantidad de caracteres. En otras palabras: el segundo caracter debe ser una R sí o sí, los demás caracteres pueden ser cualesquiera.

Si se quiere limitar la cantidad de caracteres, se puede usar un guión bajo para cada carácter, por ejemplo:

PRD_NOMBRE LIKE ‘__R___A’ solamente mostrará a los productos que tengan 7 letras, la tercera sea una R y la séptima sea una A

Ejemplo Nº 028 – Usando comodines en las cadenas alfanuméricas (2)

2 comentarios

SELECT
   PRD_CODIGO,
   PRD_NOMBRE,
   PRD_PREVTA
FROM
   PRODUCTOS
WHERE
   PRD_NOMBRE LIKE '%R%'

Este SELECT mostrará el Código, el Nombre y el Precio de Venta de todos los productos que tengan un letra “R” en su nombre porque el símbolo de porcentaje significa: “aquí puede haber un caracter o varios caracteres”. La letra “R” es un caracter fijo o sea que debe estar sí o sí.

También se pueden escribir varios caracteres, por ejemplo:

PRD_NOMBRE LIKE '%ANA%'

Si vendemos frutas, el SELECT de arriba nos mostrará: ANANÁ, BANANA, MANZANA, y toda otra fruta que tenga las letras ANA en su nombre.

Ejemplo Nº 027 – Usando comodines en las cadenas alfanuméricas (1)

1 comentario

SELECT
   PRD_CODIGO,
   PRD_NOMBRE,
   PRD_PREVTA
FROM
   PRODUCTOS
WHERE
   PRD_NOMBRE LIKE 'CER%'

El símbolo de porcentaje significa: “aquí puede haber un caracter o varios caracteres”

En este caso este SELECT nos mostrará el Código, el Nombre y el Precio de Venta de todos los productos cuyos nombres empiecen con las letras “CER”

Si se hubiera escrito:

   PRD_NOMBRE LIKE 'M%'

mostraría los productos cuyos nombres empiecen con la letra “M”

Older Entries