Store Procedure + Todo en un solo Procedimiento (Update, Delete, Inser,listar, buscar)

08/10/2009 - 23:06 por Don Quijote de Nicaragua | Informe spam
Hola a todos, me gustaría preguntar algo, estamos elaborando un
sistema y parece que tendremos que crear muchisiimo procedimientos
almacenados, entonces estamos tomando la desición de poner digamos si
es el procedimiento de Pais, dejar un único procedimiento denominado
"spPais" y poner dentro de él las opciones de nuevo, modificar,
borrar, listar, buscar, etc, y lo identificariamos por un parametro,
creen ustedes que estro tendria algún efecto en el rendimiento al
momento de ejecutarlo.

CREATE PROCEDURE spEjemplo
@valor1 integer = NULL ,
@valor2 VARCHAR(200) NULL,
@nType integer
AS BEGIN
IF @nType=1 INSERT INTO ..
ELSE IF ...@nType=2
UPDATE CountryId=@CountryId;
ELSE IF @nType=0 DELET
END

Muchas Gracias.
Don Quijote de Nicaragua.

Preguntas similare

Leer las respuestas

#6 Don Quijote de Nicaragua
09/10/2009 - 00:47 | Informe spam
Excelente Muchas Gracias Amigo, por tu tiempo y respuesta.
Saludos desde Nicaragua.
Don Quijote de Nicaragua.

On 8 oct, 16:42, "Carlos M. Calvelo" wrote:
Mostrar la cita
#7 Carlos M. Calvelo
09/10/2009 - 00:59 | Informe spam
On 9 okt, 00:47, Don Quijote de Nicaragua wrote:
Mostrar la cita
A ver si otros te dan otras respuestas mas directas
a tu pregunta original. Como ya te habrás dado
cuenta, a mi ya solo la idea me bloquea la mente :)

Suerte con el asunto,
Carlos
#8 Carlos Sacristan
09/10/2009 - 09:51 | Informe spam
No termino de ver lo práctico que pueda ser eso. Lo que estás queriendo
hacer presupone que todas las operaciones reciben el mismo número de
parámetros, es decir:

- En la inserción está claro que se necesitan todos los campos (o al menos
los que no tengan un valor predeterminado)
- En el borrado podrías necesitar únicamente la clave primaria, pero
podría ser que seleccionaras el registro en base a otros criterios
- En la actualización no veo por qué vas a tener que actualizar todos los
campos
- Las búsquedas es un ejemplo aún más claro, ya que habrá veces que
busques por un campo, por otro, por la combinación de ambos, etc.

Lo que quiero decir es que estáis mapeando una tabla con un procedimiento
almacenado directamente, lo cual creo que no es correcto. A mí me gusta
pensar los procedimientos almacenados como una capa de acceso que
proporcione los métodos adecuados para realizar operaciones contra la base
de datos. Por ejemplo, si tenemos la tabla "Usuarios" y "Emails", la
creación del usuario se haría por medio de un procedimiento almacenado que
controlara la inserción de los datos básicos del usuario, pero también los
correos electrónicos que pueda tener.

Es un ejemplo muy sencillo, pero lo que intento es expresar la idea. De
todos modos, este tema es uno de los más discutidos en la comunidad
(procedimientos almacenados sí o no), por lo que cada uno te dará una
opinión distinta.

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"Don Quijote de Nicaragua" wrote in message
news:
Hola a todos, me gustaría preguntar algo, estamos elaborando un
sistema y parece que tendremos que crear muchisiimo procedimientos
almacenados, entonces estamos tomando la desición de poner digamos si
es el procedimiento de Pais, dejar un único procedimiento denominado
"spPais" y poner dentro de él las opciones de nuevo, modificar,
borrar, listar, buscar, etc, y lo identificariamos por un parametro,
creen ustedes que estro tendria algún efecto en el rendimiento al
momento de ejecutarlo.

CREATE PROCEDURE spEjemplo
@valor1 integer = NULL ,
@valor2 VARCHAR(200) NULL,
@nType integer
AS BEGIN
IF @nType=1 INSERT INTO ..
ELSE IF =2
UPDATE CountryId=@CountryId;
ELSE IF @nType=0 DELET
END

Muchas Gracias.
Don Quijote de Nicaragua.
#9 DiegoC
09/10/2009 - 20:30 | Informe spam
Hola Carlos, me parece que lo de usar SQL Dinamico, no es conveniente por el
tema de performance, sino me equivoco haria que los palnes de ejecucion no
sean reutilizables.

En el caso de querer implementar todo en un SP podria usar como parametro_1,
el tipo de operacion, como parametro_2 un XML con los datos a
Updatear/Insertar, Parametro_3 Filtro (Updatear/Eliminar/Buscar)

Es solo una idea,

Saludos, dcaro

"Carlos M. Calvelo" escribió en el mensaje
news:
Hola,

On 8 okt, 23:50, Don Quijote de Nicaragua wrote:
Mostrar la cita
Ah! :-)
Entonces es decisión y 'problema' de tal corporación.


Mostrar la cita
No creo que se note diferencia en rendimiento si tienes tres o
cuatro procediminetos o uno con un par de IF's.
Dada la situación yo escogería aquella forma con la que los que
teneis que trabajar con esos procediminetos os sintáis mas
confortables.

Naturalmene 'buscar' y 'listar' tiene otra interfaz (devuelven
tablas) que los insert, delete y update.

En cuanto a esa regla tajante de la organizacion... (y por ser
un poco terco)... y que pasa si solo montáis un par de procedimientos
que reciben una cadena con instruciones SQL y este se ejecuta como
sql dinámico en el procedimiento? :-) :-)

Saludos,
Carlos
#10 Carlos M. Calvelo
09/10/2009 - 22:03 | Informe spam
Hola Diego,

On Fri, 9 Oct 2009 15:30:00 -0300, DiegoC wrote:

Mostrar la cita
Claro que no es conveniente. Lo conveniente es utizar las operaciones
select, insert, update y delete de SQL, que para eso están.


Mostrar la cita
Y eso si sería 'conveniente'? Son entonces los planes de ejecución
reutilizables?

Yo no le veo ningún sentido a la idea orignal de no tener acceso a las
tablas si no es por medio de procedimientos. En cuanto no entienda
eso (desde la técnica, no la política de las empresas), cualquier
alternativa me va a parecer bastante 'chapuza'.

Saludos,
Carlos
Ads by Google
Search Busqueda sugerida