La reutilización de código de procedimiento almacenado

De la misma manera que se pueden crear etiquetas personalizadas a partir de fragmentos de código de ColdFusion y luego llamar a las etiquetas personalizadas de otras plantillas de ColdFusion, que puede hacer prácticamente lo mismo con los procedimientos almacenados. Los procedimientos almacenados pueden llamar a otros procedimientos almacenados de la misma manera que ellos son llamados de ColdFusion pero sin la etiqueta basada en la interfaz. Digamos, por ejemplo, que tiene un procedimiento almacenado, sp_GetInventoryItem, que recupera una fila InventoryItem basado en el valor ItemNumber pasado . Utiliza sp_GetInventoryItem a través de su aplicación de comercio electrónico para obtener información del producto a los usuarios navegar por el catálogo, y también se utiliza para recuperar los artículos de inventario para el trabajo administrativo. Ahora quiere incorporar sp_GetInventoryItem con otro procedimiento almacenado sp_DiscountItem-que los descuentos del precio de un artículo en función de si el usuario introduce un código de cupón de descuento válido en el comienzo de su período de sesiones de la compra. Puede repetir el código para recuperar el objeto del inventario y realizar el descuento en cada procedimiento almacenado que requiere esa función, o usted puede hacer más fácil el mantenimiento del código mediante la ruptura ejemplos de código común en sus propios procedimientos y llamarlos cuando sea necesario, como se muestra en el código.

- Este procedimiento será llamado por sp_DiscountItem sp_GetInventoryItem CREATE PROCEDURE (@ giiItemNumber Varchar (15), @ Varchar giiDescription (40) OUTPUT, @ giiUnitPrice Numérico (12,2) OUTPUT, @ giiAvailableToSell entero OUTPUT, @ giiComments varchar (200) OUTPUT ) AS SELECT @ giiDescription = description, @ giiUnitPrice = Precio por unidad, @ giiAvailableToSell = AvailableToSell, @ giiComments = Comentarios InventoryItem DESDE DONDE
ItemNumber = @ return giiItemNumber ir - Este procedimiento también será llamado por sp_DiscountItem sp_GetAmountDue CREATE PROCEDURE (@ Couponcode Varchar (16), @ importe adeudado Numérico (12,2) OUTPUT) AS DECLARE @ Bit Redimido, @ numérico PercentDiscount (12,2 ) SELECT @ Redimido = redimido, @ PercentDiscount = PercentDiscount de descuento DE DONDE Couponcode Couponcode = @ IF (@ @ ROWCOUNT! = 1) BEGIN RETURN - Cupón no existe, sin cambio de precio end if (@ Redimido = 1) BEGIN RETURN - Cupón ya redimido, sin cambio de precio END ELSE BEGIN SELECT @ @ = importe adeudado importe adeudado * (1 - @ PercentDiscount / 100) return end go - Este es el procedimiento principal que se llama CREA sp_DiscountItem PROCEDIMIENTO (@ diCouponCode Varchar (16) , @ (15 diItemNumber Varchar), @ Varchar diDescription (40) OUTPUT, @ diUnitPrice Numérico (12,2) OUTPUT, @ diAvailableToSell entero OUTPUT, @ diComments varchar (200) OUTPUT) AS sp_GetInventoryItem exec (
giiItemNumber = @ @ diItemNumber, giiDescription = @ @ diDescription OUTPUT, @ giiAvailableToSell giiUnitPrice SALIDA diUnitPrice = @ @ = @ SALIDA diAvailableToSell, giiComments = @ @ diComments OUTPUT) sp_GetAmountDue EXEC (@ Couponcode diCouponCode = @ @ @ output = importe adeudado diUnitPrice) VOLVER ir
  

La primera vez que alguna vez codificado tal cosa, la cabeza cerca de Split Wide Open de la confusión! Cuál es el parámetro de entrada en la que la producción, y cómo esto un paso atrás para que uno y así sucesivamente? Bueno, por fin encontrado una manera de explicar un procedimiento mediante el uso de parámetros OUTPUT que llamar a otro de una manera que tenga sentido. Se puede encontrar un archivo llamado Adobe Acrobat Tracing.pdf parámetro de salida, que contiene el listado anterior, repetido una vez por cada paso en la transmisión de parámetros de proceso, junto con un diagrama para cada paso y una explicación en Inglés simple de lo que sucede en cada paso. Seguimos a uno de estos parámetros de salida, UnitPrice-en su viaje completo a través de todos los procedimientos almacenados que lo utilizan y muestran cómo los valores se adquieren y se pasa entre los parámetros. Estamos muy sugerir que tome unos momentos para abrir el documento y después de cada paso del proceso. Para realmente aprovechar los procedimientos almacenados en sus aplicaciones de ColdFusion, usted necesita para comprender este tema complicado. Hemos repetido la descripción Inglés llanura de cada paso en la lista numerada siguiente, pero con el diagrama de la mano como lo leen realmente ayuda. El proceso comienza con todos los sp_DiscountItem procedimiento que se llama desde ColdFusion como sigue:

1. sp_DiscountItem es el primer procedimiento almacenado llamado. El parámetro de salida @ diUnitPrice comienza con un valor NULL; en este punto, @ diUnitPrice es sólo un "cubo vacío" para recibir un valor de regresar de sp_DiscountItem después de que termine la ejecución y luego regresar ese valor a la aplicación cliente. SALIDA sp_DiscountItem dice, "Si haces algo que el valor de @ diUnitPrice durante su ejecución, SALIDA su nuevo valor de nuevo en @ diUnitPrice para que el nuevo valor puede ser utilizado por cualquier aplicación o procedimiento llamado." Si @ diUnitPrice no han sido definidas como la producción, se quedaría NULL después de sp_DiscountItem terminado de ejecutarse.

2. @ diUnitPrice es el valor de la alimentación de los parámetro de salida @ giiItemUnitPrice de la llamada a sp_GetInventoryItem. En este momento, todavía es sólo un valor NULL.

3. @ giiUnitPrice inicializa con el valor NULL suministrados por @ diUnitPrice y ahora está listo para llamar a sp_GetInventoryItem.

4. sp_GetInventoryItem que ahora se llama con @ giiUnitPrice como un parámetro OUTPUT. Todavía contiene un valor NULL. Es sólo trabajo en este punto es proporcionar un cubo vacío en el que sp_GetInventoryItem puede poner un valor.

5. Después de sp_GetInventoryItem se ejecuta, se selecciona el valor de la columna de InventoryItem.UnitPrice en el parámetro de salida @ giiUnitPrice.

6. @ giiUnitPrice contiene ahora el precio por unidad recupera del objeto del inventario en lugar de un valor NULL.

7. Debido @ giiUnitPrice es un parámetro de salida en sp_GetInventoryItem, su nuevo valor es de salida a sp_DiscountItem @ en el interior de giiUnitPrice, que acaba de llamar sp_GetInventoryItem.

8. Este nuevo valor de @ giiUnitPrice se ve salida a en el parámetro @ diUnitPrice que originalmente alimentado el valor NULL a @ giiUnitPrice, porque @ diUnitPrice tiene el calificador OUTPUT en la llamada a sp_GetInventoryItem. Ahora @ diUnitPrice contiene el mismo valor de regresar de sp_GetInventoryItem.

9. Ahora tiene el valor descontado precio unitario de los registros almacenados en el objeto del inventario @ diUnitPrice, y se puede alimentar a este valor a sp_GetAmountDue una reducción en los precios.

10. @ Importe adeudado se inicializa con el valor almacenado en @ diUnitPrice y ahora está listo para llamar a sp_GetAmountDue.

11. sp_GetAmountDue que ahora se llama con @ importe adeudado como un parámetro OUTPUT. En la actualidad contiene el valor de precio por unidad de regresar de el registro de objeto del inventario.

12. sp_GetAmountDue puede o no puede modificar el valor almacenado en @ importe adeudado, pero si lo hace, el valor modificado se restaura en @ importe adeudado.

13. Debido @ importe adeudado es un parámetro de salida en sp_GetAmountDue, su nuevo valor es de salida a en el interior de sp_DiscountItem @ importe adeudado, que acaba de llamar sp_GetAmountDue.

14. Este nuevo valor de @ importe adeudado es más de salida a en el parámetro @ diUnitPrice que originalmente alimentado sin modificar el precio por unidad de valor a @ importe adeudado, porque @ diUnitPrice tiene el calificador OUTPUT en la llamada a sp_GetAmountDue. Now @ diUnitPrice contiene el (posiblemente) Unidad vez valor del precio de regresar de sp_GetAmountDue.

15. Debido @ diUnitPrice es un parámetro de salida en sp_DiscountItem, @ diUnitPrice puede dar salida a su final, tal vez el valor a la aplicación de ColdFusion que lo llamó en primer lugar.

un artículo presentado por Michael Patterson


Descargo de responsabilidad:Nuestro sitio web no es responsable por el contenido de este artículo. Webarticles es un recurso de información gratuito.
Importante: Este artículo "La reutilización de código de procedimiento almacenado", fue traducida por un software automático. Sentimos pena por los errores de ortografía que pueda haber ocurrido. Gracias por su comprensión.


Online: 214 users browsing the articles directory   


  

|