Pasar argumentos variables a un SP

03/01/2005 - 14:12 por Leonardo Azpurua | Informe spam
Hola.

Si uno ve la sintaxis de sp_executesql, descubre que es posible pasar un
número variable de argumentos a "algunos" SP de SQL Server.

Acabo de leer detalladamente la descripcion de CREATE PROCEDURE, y no
describe ese mecanismo de ningun modo.

La implementacion de sp_executesql está oculta (definida como "Server
Internal").

Entonces: es posible de alguna manera más o menos esotérica pasar un numero
de argumentos variable a un SP?

Salud!

Preguntas similare

Leer las respuestas

#6 Rubén Vigón
03/01/2005 - 16:27 | Informe spam
Hola Leonardo!

No sé si habías leído mi articulito:

Implementación de argumentos variables mediante XML en SQL Server 2000
Cómo pasar un número de argumentos variables a los procedimientos almacenados usando XML, evitando el uso de SQL dinámico (sp_executesql)
http://www.mvp-access.com/rubenvigo...server.pdf

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://www.mvp-access.com/rubenvigon
Respuesta Responder a este mensaje
#7 Asterion
03/01/2005 - 16:35 | Informe spam
Excelente!


"Rubén Vigón" escribió:

Hola Leonardo!

No sé si habías leído mi articulito:

Implementación de argumentos variables mediante XML en SQL Server 2000
Cómo pasar un número de argumentos variables a los procedimientos almacenados usando XML, evitando el uso de SQL dinámico (sp_executesql)
http://www.mvp-access.com/rubenvigo...server.pdf

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://www.mvp-access.com/rubenvigon

Respuesta Responder a este mensaje
#8 Maxi
03/01/2005 - 16:54 | Informe spam
No se porque lo diras ;)


Salu2
Maxi


"Melissa Ruiz" escribió en el mensaje
news:
Pasar argumentos variables !!!!???? nooooo... imposible.. el plan de
ejecucion no estara en cache, habra inyeccion de codigo, tienes problemas
de
seguridad en extremo, por ahi se meteran virus, MS no lo recomienda,
deben leer primero para hacer esas cosas, etc. etc. etc. etc...

Perdon es broma de año nuevoque de otros links mas abajo me
quedo...
jejejej X-DDD



"Leonardo Azpurua" <l e o n a r d o (arroba) m v p s (punto) o r g> wrote
in
message news:
Hola.

Si uno ve la sintaxis de sp_executesql, descubre que es posible pasar un
número variable de argumentos a "algunos" SP de SQL Server.

Acabo de leer detalladamente la descripcion de CREATE PROCEDURE, y no
describe ese mecanismo de ningun modo.

La implementacion de sp_executesql está oculta (definida como "Server
Internal").

Entonces: es posible de alguna manera más o menos esotérica pasar un


numero
de argumentos variable a un SP?

Salud!






Respuesta Responder a este mensaje
#9 Maxi
03/01/2005 - 16:55 | Informe spam
Excelente Articulo!!!!


Salu2
Maxi


"Rubén Vigón" escribió en el mensaje
news:
Hola Leonardo!

No sé si habías leído mi articulito:

Implementación de argumentos variables mediante XML en SQL Server 2000
Cómo pasar un número de argumentos variables a los procedimientos
almacenados usando XML, evitando el uso de SQL dinámico (sp_executesql)
http://www.mvp-access.com/rubenvigo...server.pdf

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://www.mvp-access.com/rubenvigon
Respuesta Responder a este mensaje
#10 Leonardo Azpurua
03/01/2005 - 17:02 | Informe spam
"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
Leonardo, echa un vistazo a este artículo:
http://www.sommarskog.se/arrays-in-sql.html



Hola, Carlos:

Creo que al final voy a investigar un poco como hacerlo con XML.

Pero hay que ver lo que dice la gente. En el articulo que refieres, se
describen varios métodos, que el autor divide en "los buenos" (The good
ones) y "los malos" (The ones to stay away from).

El primero de los buenos es "el metodo iterativo" y el último de los
malos son:

"Los métodos verdaderamente lentos: métodos que utilizan
charindex, patindex o LIKE. Estas soluciones son simplemente
increiblemente lentas incluso con conjuntos de entrada pequeños."

De manera que el primer metodo recomendado es "el metodo iterativo".

Pero vamos a la implementacion del metodo iterativo, y nos encontramos
con:

SET @pos = charindex(' ', @tmpstr)
WHILE @pos > 0
BEGIN
SET @str = substring(@tmpstr, 1, @pos - 1)
INSERT @tbl (number) VALUES(convert(int, @str))
SET @tmpstr = ltrim(substring(@tmpstr, @pos + 1, len(@tmpstr)))
SET @pos = charindex(' ', @tmpstr)
END

es decir, una implementación basada en CHARINDEX. ¿Pero esto no era
increiblemente lento, incluso con conjuntos de entrada pequeños?

¿Hay diferencias de performance entre utilizar CHARINDEX en un SP o
utilizarlo en una UDF?

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