Básicamente, estoy buscando un equivalente a SqlCommandBuilder.DeriveParameters
que funcione para T-SQL arbitrario.¿Cómo puedo determinar los parámetros requeridos por una pieza arbitraria de T-SQL?
Por ejemplo, esta consulta requiere un parámetro:
SELECT @Foo [Foo], '@Bar' [Bar], @Baz [Baz]
Básicamente necesito para extraer:
new[] { "Foo", "Baz" }
desde arriba. Podría construir un analizador SQL, pero tengo una conexión abierta al servidor SQL, así que preferiría usar una opción existente si es posible.
Editar:
Hay tiene que haber una manera de hacer esto, porque Business Intelligence Development Studio de SQL Server es capaz de hacer esto con mucho éxito.
Edición 2:
OFERTAS SQL está ejecutando este comando con el fin de describir los resultados:
exec sp_executesql N'SET FMTONLY OFF;SET FMTONLY ON;SELECT @Foo [Foo], ''@Bar'' [Bar], @Baz [Baz]',
N'@Foo sql_variant,@Baz sql_variant',
@Foo=NULL,@Baz=NULL
que explica cómo se puede determinar las columnas, pero puede ser solo cadena de análisis para obtener los parámetros ...
¿Cómo estás construyendo esta cadena inicial? ¿Hay algo que pueda usar que esté usando para construir dinámicamente esta cadena para encontrar los parámetros requeridos? – mservidio
¿El Analizador de SQL muestra algo interesante si mira el servidor mientras obtiene Business Intelligence Development Studio para hacerlo? Nos diría si se trata de una función de servidor o simplemente un análisis de cadenas – AakashM
Quizás solo utilice una expresión regular para encontrar las @variables que no están entre comillas ... eso debería funcionar, creo. – mservidio