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
#7 Asterion
03/01/2005 - 16:35 | Informe spam
Excelente!


"Rubén Vigón" escribió:

Mostrar la cita
#8 Maxi
03/01/2005 - 16:54 | Informe spam
No se porque lo diras ;)


Salu2
Maxi


"Melissa Ruiz" escribió en el mensaje
news:
Mostrar la cita
#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
#10 Leonardo Azpurua
03/01/2005 - 17:02 | Informe spam
"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
Mostrar la cita
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!
Ads by Google
Search Busqueda sugerida