Vista simple vs. Stored Procedure

31/01/2008 - 09:03 por Yuri Aponte | Informe spam
Hola Amigos

Disculpen el texto del asunto pero la verdad no sabia como poner mi duda.

Tengo una vista que me trae los registros de mi tabla clientes, relacionada
con varias tablas para sacar tipos de documento, zonas, etc. Y luego tengo
un SP donde paso algunos parametros para trabajar con esa vista. Esto es lo
normal diria yo.

Pero casi por inercia creo vistas para tablas de solo codigo y descripcion,
asi:

CREATE VIEW dbo.vw_Monedas
AS
SELECT Codigo,Descripcion
FROM dbo.Sys_Tabla_Monedas

y luego creo un SP que seria algo asi

CREATE PROCEDURE sp_Monedas
AS
Select * From vw_Monedas Order By Codigo
GO


Pregunto?, No podria en el mismo SP hacer el Select * de la tabla
directamente?.. Gano algo si tengo una vista y luego un SP. Vuelvo a indicar
que es un acto por inercia que me lleva a crear vistas de mis tablas y luego
los Sp respectivos, pero me he puse a revisar y me tope con esta situacion y
queria algun comentario al respecto.

Gracias anticipadas por las respuestas


Saludos desde Lima, Peru

Yuri Aponte
Analista de Sistemas
yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe

Preguntas similare

Leer las respuestas

#1 Jhonny Vargas P.
31/01/2008 - 14:08 | Informe spam
Hola,

Por lo menos en mi caso, el uso de vistas están dadas cuando se encuentran
en otra base de datos, con esto hago referencia solo a la vista y no tengo
en duro la ruta completa para hacer un simple select, así si cuando quiero
cambiar el nombre de la base de datos, o requiero levantar un respaldo...
solo apunto la vista a la base de datos y no debo corregir ningún SP.

Para tu caso, creo que no tiene sentido usar vistas si están en la misma
base de datos.

Espero te sirva.

Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile

"Yuri Aponte" <yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe>
escribió en el mensaje de noticias:ecJQ$#
Hola Amigos

Disculpen el texto del asunto pero la verdad no sabia como poner mi duda.

Tengo una vista que me trae los registros de mi tabla clientes,
relacionada con varias tablas para sacar tipos de documento, zonas, etc. Y
luego tengo un SP donde paso algunos parametros para trabajar con esa
vista. Esto es lo normal diria yo.

Pero casi por inercia creo vistas para tablas de solo codigo y
descripcion, asi:

CREATE VIEW dbo.vw_Monedas
AS
SELECT Codigo,Descripcion
FROM dbo.Sys_Tabla_Monedas

y luego creo un SP que seria algo asi

CREATE PROCEDURE sp_Monedas
AS
Select * From vw_Monedas Order By Codigo
GO


Pregunto?, No podria en el mismo SP hacer el Select * de la tabla
directamente?.. Gano algo si tengo una vista y luego un SP. Vuelvo a
indicar que es un acto por inercia que me lleva a crear vistas de mis
tablas y luego los Sp respectivos, pero me he puse a revisar y me tope con
esta situacion y queria algun comentario al respecto.

Gracias anticipadas por las respuestas


Saludos desde Lima, Peru

Yuri Aponte
Analista de Sistemas
yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe


Respuesta Responder a este mensaje
#2 Yuri Aponte
31/01/2008 - 14:19 | Informe spam
Hola Jhonny

Gracias por la respuesta..

Ni siquiera para este caso, que la vista usan relaciones con otras tablas?.

CREATE VIEW dbo.vw_Trabajadores
AS
SELECT dbo.Sys_Trabajadores.*, dbo.Sys_Tabla_T03.Abreviatura AS
TipoDocumento
FROM dbo.Sys_Trabajadores LEFT OUTER JOIN
dbo.Sys_Tabla_T03 ON dbo.Sys_Tabla_T03.Codigo =
dbo.Sys_Trabajadores.codTipoDocumento

CREATE PROCEDURE sp_Trabajadores
/* Devuelve los registros de la vista vw_Trabajadores
RucEmpresa - Para filtrar
Order = 1 - Ordenados por Codigo
Order = 2 - Ordenados por Nombre
*/
(
@Ruc varchar(15),
@Order Int
)
AS
If @Order = 1
Select * From vw_Trabajadores Where NroRUC = @RUC Order By Codigo
If @Order = 2
Select * From vw_Trabajadores Where NroRUC = @RUC Order By
ApellidoPaterno, ApellidoMaterno, Nombres
GO


Gracias por tus comentarios.

Saludos desde Lima, Peru

Yuri Aponte
Analista de Sistemas
yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe

"Jhonny Vargas P." escribió en el mensaje
news:%23$
Hola,

Por lo menos en mi caso, el uso de vistas están dadas cuando se encuentran
en otra base de datos, con esto hago referencia solo a la vista y no tengo
en duro la ruta completa para hacer un simple select, así si cuando quiero
cambiar el nombre de la base de datos, o requiero levantar un respaldo...
solo apunto la vista a la base de datos y no debo corregir ningún SP.

Para tu caso, creo que no tiene sentido usar vistas si están en la misma
base de datos.

Espero te sirva.

Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile

"Yuri Aponte" <yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe>
escribió en el mensaje de
noticias:ecJQ$#
Hola Amigos

Disculpen el texto del asunto pero la verdad no sabia como poner mi duda.

Tengo una vista que me trae los registros de mi tabla clientes,
relacionada con varias tablas para sacar tipos de documento, zonas, etc.
Y luego tengo un SP donde paso algunos parametros para trabajar con esa
vista. Esto es lo normal diria yo.

Pero casi por inercia creo vistas para tablas de solo codigo y
descripcion, asi:

CREATE VIEW dbo.vw_Monedas
AS
SELECT Codigo,Descripcion
FROM dbo.Sys_Tabla_Monedas

y luego creo un SP que seria algo asi

CREATE PROCEDURE sp_Monedas
AS
Select * From vw_Monedas Order By Codigo
GO


Pregunto?, No podria en el mismo SP hacer el Select * de la tabla
directamente?.. Gano algo si tengo una vista y luego un SP. Vuelvo a
indicar que es un acto por inercia que me lleva a crear vistas de mis
tablas y luego los Sp respectivos, pero me he puse a revisar y me tope
con esta situacion y queria algun comentario al respecto.

Gracias anticipadas por las respuestas


Saludos desde Lima, Peru

Yuri Aponte
Analista de Sistemas
yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe


Respuesta Responder a este mensaje
#3 Jhonny Vargas P.
31/01/2008 - 14:24 | Informe spam
Claro... también puedes usarlas para UNION ALL... u operaciones... pero para
mi caso, prefiero solo cuando se encuentran en otra base de datos, aunque
también las he utilizado cuando se tiene datos historicos en tablas
historias, por ejemplo... movimiento2005, movimiento2006, movimiento2007...
y te piden que solo mantengas los dos ultimos años... solo cambias el
union de la vista y nada más.



Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile

"Yuri Aponte" <yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe>
escribió en el mensaje de noticias:
Hola Jhonny

Gracias por la respuesta..

Ni siquiera para este caso, que la vista usan relaciones con otras
tablas?.

CREATE VIEW dbo.vw_Trabajadores
AS
SELECT dbo.Sys_Trabajadores.*, dbo.Sys_Tabla_T03.Abreviatura AS
TipoDocumento
FROM dbo.Sys_Trabajadores LEFT OUTER JOIN
dbo.Sys_Tabla_T03 ON dbo.Sys_Tabla_T03.Codigo =
dbo.Sys_Trabajadores.codTipoDocumento

CREATE PROCEDURE sp_Trabajadores
/* Devuelve los registros de la vista vw_Trabajadores
RucEmpresa - Para filtrar
Order = 1 - Ordenados por Codigo
Order = 2 - Ordenados por Nombre
*/
(
@Ruc varchar(15),
@Order Int
)
AS
If @Order = 1
Select * From vw_Trabajadores Where NroRUC = @RUC Order By Codigo
If @Order = 2
Select * From vw_Trabajadores Where NroRUC = @RUC Order By
ApellidoPaterno, ApellidoMaterno, Nombres
GO


Gracias por tus comentarios.

Saludos desde Lima, Peru

Yuri Aponte
Analista de Sistemas
yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe

"Jhonny Vargas P." escribió en el
mensaje news:%23$
Hola,

Por lo menos en mi caso, el uso de vistas están dadas cuando se
encuentran en otra base de datos, con esto hago referencia solo a la
vista y no tengo en duro la ruta completa para hacer un simple select,
así si cuando quiero cambiar el nombre de la base de datos, o requiero
levantar un respaldo... solo apunto la vista a la base de datos y no debo
corregir ningún SP.

Para tu caso, creo que no tiene sentido usar vistas si están en la misma
base de datos.

Espero te sirva.

Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile

"Yuri Aponte"
<yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe> escribió en
el mensaje de noticias:ecJQ$#
Hola Amigos

Disculpen el texto del asunto pero la verdad no sabia como poner mi
duda.

Tengo una vista que me trae los registros de mi tabla clientes,
relacionada con varias tablas para sacar tipos de documento, zonas, etc.
Y luego tengo un SP donde paso algunos parametros para trabajar con esa
vista. Esto es lo normal diria yo.

Pero casi por inercia creo vistas para tablas de solo codigo y
descripcion, asi:

CREATE VIEW dbo.vw_Monedas
AS
SELECT Codigo,Descripcion
FROM dbo.Sys_Tabla_Monedas

y luego creo un SP que seria algo asi

CREATE PROCEDURE sp_Monedas
AS
Select * From vw_Monedas Order By Codigo
GO


Pregunto?, No podria en el mismo SP hacer el Select * de la tabla
directamente?.. Gano algo si tengo una vista y luego un SP. Vuelvo a
indicar que es un acto por inercia que me lleva a crear vistas de mis
tablas y luego los Sp respectivos, pero me he puse a revisar y me tope
con esta situacion y queria algun comentario al respecto.

Gracias anticipadas por las respuestas


Saludos desde Lima, Peru

Yuri Aponte
Analista de Sistemas
yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe








Respuesta Responder a este mensaje
#4 Yuri Aponte
31/01/2008 - 14:29 | Informe spam
Excelente, por lo menos medio trabajo no esta perdido :-D

Lo que pasa es que mi entusiamos por empezar a usar SP hizo que cayera en
estas cuestiones.

Aunque eso es lo bueno de trabajar asi, simplemente modifico el SP y listo,
no toco para nada mi codigo :-D

Saludos desde Lima, Peru

Yuri Aponte
Analista de Sistemas
yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe

"Jhonny Vargas P." escribió en el mensaje
news:
Claro... también puedes usarlas para UNION ALL... u operaciones... pero
para mi caso, prefiero solo cuando se encuentran en otra base de datos,
aunque también las he utilizado cuando se tiene datos historicos en tablas
historias, por ejemplo... movimiento2005, movimiento2006,
movimiento2007... y te piden que solo mantengas los dos ultimos años...
solo cambias el union de la vista y nada más.



Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile

"Yuri Aponte" <yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe>
escribió en el mensaje de noticias:
Hola Jhonny

Gracias por la respuesta..

Ni siquiera para este caso, que la vista usan relaciones con otras
tablas?.

CREATE VIEW dbo.vw_Trabajadores
AS
SELECT dbo.Sys_Trabajadores.*, dbo.Sys_Tabla_T03.Abreviatura AS
TipoDocumento
FROM dbo.Sys_Trabajadores LEFT OUTER JOIN
dbo.Sys_Tabla_T03 ON dbo.Sys_Tabla_T03.Codigo =
dbo.Sys_Trabajadores.codTipoDocumento

CREATE PROCEDURE sp_Trabajadores
/* Devuelve los registros de la vista vw_Trabajadores
RucEmpresa - Para filtrar
Order = 1 - Ordenados por Codigo
Order = 2 - Ordenados por Nombre
*/
(
@Ruc varchar(15),
@Order Int
)
AS
If @Order = 1
Select * From vw_Trabajadores Where NroRUC = @RUC Order By Codigo
If @Order = 2
Select * From vw_Trabajadores Where NroRUC = @RUC Order By
ApellidoPaterno, ApellidoMaterno, Nombres
GO


Gracias por tus comentarios.

Saludos desde Lima, Peru

Yuri Aponte
Analista de Sistemas
yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe

"Jhonny Vargas P." escribió en el
mensaje news:%23$
Hola,

Por lo menos en mi caso, el uso de vistas están dadas cuando se
encuentran en otra base de datos, con esto hago referencia solo a la
vista y no tengo en duro la ruta completa para hacer un simple select,
así si cuando quiero cambiar el nombre de la base de datos, o requiero
levantar un respaldo... solo apunto la vista a la base de datos y no
debo corregir ningún SP.

Para tu caso, creo que no tiene sentido usar vistas si están en la misma
base de datos.

Espero te sirva.

Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile

"Yuri Aponte"
<yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe> escribió en
el mensaje de noticias:ecJQ$#
Hola Amigos

Disculpen el texto del asunto pero la verdad no sabia como poner mi
duda.

Tengo una vista que me trae los registros de mi tabla clientes,
relacionada con varias tablas para sacar tipos de documento, zonas,
etc. Y luego tengo un SP donde paso algunos parametros para trabajar
con esa vista. Esto es lo normal diria yo.

Pero casi por inercia creo vistas para tablas de solo codigo y
descripcion, asi:

CREATE VIEW dbo.vw_Monedas
AS
SELECT Codigo,Descripcion
FROM dbo.Sys_Tabla_Monedas

y luego creo un SP que seria algo asi

CREATE PROCEDURE sp_Monedas
AS
Select * From vw_Monedas Order By Codigo
GO


Pregunto?, No podria en el mismo SP hacer el Select * de la tabla
directamente?.. Gano algo si tengo una vista y luego un SP. Vuelvo a
indicar que es un acto por inercia que me lleva a crear vistas de mis
tablas y luego los Sp respectivos, pero me he puse a revisar y me tope
con esta situacion y queria algun comentario al respecto.

Gracias anticipadas por las respuestas


Saludos desde Lima, Peru

Yuri Aponte
Analista de Sistemas
yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe








Respuesta Responder a este mensaje
#5 Jhonny Vargas P.
31/01/2008 - 14:43 | Informe spam
Pero te recomiendo que independiente de eso...
- siempre piensa en lo que menos debas hacer cuando te pidan un cambio
brusco
- siempre piensa en millones de datos cuando crees un sp... y revises
tiempos, procesos, bloqueos, etc.
- revisa el comportamiento con muchos usuarios concurrentes.

De todas maneras es solo una opinión personal que he visto con solo la
experiencia en los puntos que te he dicho, puede ser que no sean las más
adecuadas.

Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile


"Yuri Aponte" <yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe>
escribió en el mensaje de noticias:#lxb$
Excelente, por lo menos medio trabajo no esta perdido :-D

Lo que pasa es que mi entusiamos por empezar a usar SP hizo que cayera en
estas cuestiones.

Aunque eso es lo bueno de trabajar asi, simplemente modifico el SP y
listo, no toco para nada mi codigo :-D

Saludos desde Lima, Peru

Yuri Aponte
Analista de Sistemas
yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe

"Jhonny Vargas P." escribió en el
mensaje news:
Claro... también puedes usarlas para UNION ALL... u operaciones... pero
para mi caso, prefiero solo cuando se encuentran en otra base de datos,
aunque también las he utilizado cuando se tiene datos historicos en
tablas historias, por ejemplo... movimiento2005, movimiento2006,
movimiento2007... y te piden que solo mantengas los dos ultimos años...
solo cambias el union de la vista y nada más.



Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile

"Yuri Aponte"
<yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe> escribió en
el mensaje de noticias:
Hola Jhonny

Gracias por la respuesta..

Ni siquiera para este caso, que la vista usan relaciones con otras
tablas?.

CREATE VIEW dbo.vw_Trabajadores
AS
SELECT dbo.Sys_Trabajadores.*, dbo.Sys_Tabla_T03.Abreviatura AS
TipoDocumento
FROM dbo.Sys_Trabajadores LEFT OUTER JOIN
dbo.Sys_Tabla_T03 ON dbo.Sys_Tabla_T03.Codigo =
dbo.Sys_Trabajadores.codTipoDocumento

CREATE PROCEDURE sp_Trabajadores
/* Devuelve los registros de la vista vw_Trabajadores
RucEmpresa - Para filtrar
Order = 1 - Ordenados por Codigo
Order = 2 - Ordenados por Nombre
*/
(
@Ruc varchar(15),
@Order Int
)
AS
If @Order = 1
Select * From vw_Trabajadores Where NroRUC = @RUC Order By Codigo
If @Order = 2
Select * From vw_Trabajadores Where NroRUC = @RUC Order By
ApellidoPaterno, ApellidoMaterno, Nombres
GO


Gracias por tus comentarios.

Saludos desde Lima, Peru

Yuri Aponte
Analista de Sistemas
yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe

"Jhonny Vargas P." escribió en el
mensaje news:%23$
Hola,

Por lo menos en mi caso, el uso de vistas están dadas cuando se
encuentran en otra base de datos, con esto hago referencia solo a la
vista y no tengo en duro la ruta completa para hacer un simple select,
así si cuando quiero cambiar el nombre de la base de datos, o requiero
levantar un respaldo... solo apunto la vista a la base de datos y no
debo corregir ningún SP.

Para tu caso, creo que no tiene sentido usar vistas si están en la
misma base de datos.

Espero te sirva.

Saludos,
Jhonny Vargas P.
http://msmvps.com/jvargas
Santiago de Chile

"Yuri Aponte"
<yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe> escribió
en el mensaje de noticias:ecJQ$#
Hola Amigos

Disculpen el texto del asunto pero la verdad no sabia como poner mi
duda.

Tengo una vista que me trae los registros de mi tabla clientes,
relacionada con varias tablas para sacar tipos de documento, zonas,
etc. Y luego tengo un SP donde paso algunos parametros para trabajar
con esa vista. Esto es lo normal diria yo.

Pero casi por inercia creo vistas para tablas de solo codigo y
descripcion, asi:

CREATE VIEW dbo.vw_Monedas
AS
SELECT Codigo,Descripcion
FROM dbo.Sys_Tabla_Monedas

y luego creo un SP que seria algo asi

CREATE PROCEDURE sp_Monedas
AS
Select * From vw_Monedas Order By Codigo
GO


Pregunto?, No podria en el mismo SP hacer el Select * de la tabla
directamente?.. Gano algo si tengo una vista y luego un SP. Vuelvo a
indicar que es un acto por inercia que me lleva a crear vistas de mis
tablas y luego los Sp respectivos, pero me he puse a revisar y me tope
con esta situacion y queria algun comentario al respecto.

Gracias anticipadas por las respuestas


Saludos desde Lima, Peru

Yuri Aponte
Analista de Sistemas
yuri(-PUNTO-)aponte(-ARROBA-)apocal(-PUNTO-)com(-PUNTO-)pe














Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida