tengo un procedimiento almacenado de Microsoft SQL cuyo nombre columna quiero establecer a través de una variable que se pasa en ella:SQL: Seleccionar nombre de la columna dinámica en función de la variable
CREATE PROCEDURE [My_Procedure]
@myDynamicColumn varchar(50)
AS BEGIN
SELECT 'value' AS @myDynamicColumn
END
esto no funciona ("sintaxis incorrecta "). Si envuelvo con el nombre de columna []:
SELECT 'value' AS [@myDynamicColumn]
El nombre de la columna da salida literalmente como '@myDynamicColumn' en lugar del valor real. ¿Hay alguna manera de hacer esto? He examinado artículos dinámicos de SQL pero nada es exactamente lo que estoy pidiendo.
¿Por qué? Esta no es la forma en que debería usarse SQL – gbn
@gbn: derecho. @dotNewkow: estoy seguro de que este es solo un ejemplo artificial para ilustrar su problema, pero gbn es correcto: esto es complejo porque está mal. Si necesita alias un retorno del procedimiento almacenado, simplemente haga el aliasing en el código de llamada, donde obviamente ya conoce el valor de @myDynamicColumn. Si publica más detalles sobre su problema, tal vez podamos ofrecerle más que sql dinámico. –
Buena pregunta. Sí, entiendo los peligros del SQL dinámico. @ Nathan Skerl, estás en lo cierto, normalmente querrías configurar esto a través del código de llamada. Sin embargo, estoy ejecutando esta consulta como una conexión de datos en Excel para fines de informes. El cliente quiere 4 informes con relativamente los mismos datos pero con diferentes nombres de columna, así que hice un proceso almacenado para la reutilización y para seguir el principio DRY. Si esto fuera una vista, podría: "SELECCIONAR [columna] AS [Mi columna dinámica] DE [Mi vista]" pero como es un proceso almacenado, solo puedo hacer "EXEC Mi_Procedimiento 'Mi nombre de columna'". – dotNetkow