Crear funciones almacenadas en SQL SERVER
Buenas.
Tengo que dar soporte a una aplicación comercial que usa SQL Server y me seria muy util poder incorporar algunas funciones adicionales. me explico: Tengo un campo CHAR(70) que almacena varios valores separados por ";": (esto resultado de una adaptación especial solicitada al productor del software) algo así: Cita:
En Firebird puedo definir funciones en dll y aplicarselas a la BDD (aun no he escrito ninguna pero si he incorporado las adicionales desde UDF). Necesito crear/Incorporar las funciones al SQL SERVER: (pueden ser externas (via dll u otra) ó internas (¿funciones almacenadas SQL?) o cualquier otra forma :cool:
La intención es poder ejecutar un QUERY desde SQL con la sintaxis:
Uso SQL SERVER 2005 Gracias |
|
:eek:
Gracias por responder tan pronto. Ahora con el código que muestras puedo separar la cadena (aunque voy a probar usarlo con el campo aux02). ahora bien,¿ como pongo ese código dentro de una función ? ¿ Existen las funciones en SQL Server ? :confused: |
si, tienes que crear un "Stored Procedure" o Procedimiento almacenado
En teoría, a este procedimiento le mandas como parámetro la cadena que quieres revisar y te regresa los datos ya separados, los cuales puedes usar en delphi, en otro procedimiento o donde quieras... para crear el procedimiento, podrías hacer lo siguiente:
|
duplicado.....
|
Ok, ya +- tengo la idea, revisando por aqui veo que tambien se pueden crear funciones almacenadas.
Que con una sintaxsis similar a la que muestras se puede definir una función. ¿ Las funciones almacenadas pueden devolver usarse dentro de un select ?
creando una función así:
Claro que lo lógico sería definir 5 funciones, una global para obtener los 4 campos separados y luego, 4 funciones separadas, que llaman a la global y devuelven sólo el campo en cuestión. Disculpa la lata pero no me atrevo a tocar la BDD hasta estar bien claro. |
En lugar de hacer 5 funciones, puedes hacer una sola que reciba dos parámetros, el primero sería la cadena a revisar y el segundo parámetro sería un número u opción de dato a regresar.
Luego solo utilizas un "Case when @opcion = 1 then @Piezas when @Opcion = 2 then @Largo..." etc. |
Ok, Gracias
|
Logré llegar hasta aquí :
Que funciona bien y puedo aplicar para los demás caso. Pero si trato de hacer una funcion global para no tener que repetir todo el código para cada campo, me sale: Cita:
|
|
La franja horaria es GMT +2. Ahora son las 08:43:22. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi