ejecutar procedimiento almacenado

03/06/2008 - 23:13 por Luis Mata | Informe spam
Hay alguna otra forma de poder hacer esto,

el procedure recibe como parametro el nombre de la base de datos @nombd
declare @ejecuta varchar(100)
set @ejecuta = 'select * from '+@nombd+'.dbo.ventas'
exec (@ejecuta)

algo mas corto ya que ahi no se ve muchos problemas pero cuando son mas
variables y condiciones se pone un poco pesado.


Att
Luis Mata Figueroa
Área Informática
Centro Cerámico Las Flores SAC
RPC: 993597297
TEL: 6174613
 

Leer las respuestas

#1 Leonardo Azpurua
04/06/2008 - 05:15 | Informe spam
"Luis Mata" escribió en el mensaje
news:
Hay alguna otra forma de poder hacer esto,

el procedure recibe como parametro el nombre de la base de datos @nombd
declare @ejecuta varchar(100)
set @ejecuta = 'select * from '+@nombd+'.dbo.ventas'
exec (@ejecuta)

algo mas corto ya que ahi no se ve muchos problemas pero cuando son mas
variables y condiciones se pone un poco pesado.



Hola, Luis Mata:

A ver: si tienes n elementos variables, debes armar una sentencia de SQL
dinámico con n sustituciones, y luego llamarla mediante exec(@ejecuta) o
mediante una llamada a sp_executesql. Es una cuestión de aritmética
elemental.

A veces, por evitar escribir 10 SPs, uno cree que si escribe uno solo, lo
suficientemente complejo como para manejar las diez situaciones, se está
ganando en eficiencia.

Pero es mentira: por lo general el resultado es un código torpe, inseguro,
difícil de comprender y en consecuencia propenso a errores.

Pero eso es cuestión de estilo -y bastante independiente del lenguaje: quien
lo hace con Transact SQL, lo hace con Java o con C.

Y tambien puedes considerar la posibilidad de escribir el código
directamente desde tu aplicación: cuando tienes sentencias que se arman
dinámicamente, esto es una opción mucho más sensata que generarlas en el
servidor. Y por lo general, si lo llamas desde un lenguaje de programación,
éste tiene muchos más recursos de manejo de cadenas que el propio Transact
SQL.


Salud!

Preguntas similares