Error de sintaxis con una Subquery en una Stored Procedure
Buenas, a ver si me podeis hechar una mano...
Quiero hacer una "Stored procedure" pasándole un id para filtrar los resultados al hacer la consulta. Por ejemplo una sencillita cómo la siguiente...
SELECT Nombre_Cancion, Autor_Cancion
FROM dbo.Canciones
WHERE (Id_Estilo = @Estilo_Id)
Hasta aquí todo perfecto, funciona sin problemas. Pero ahora resulta que quiero convertir esta consulta en una subconsulta para generar otra de más compleja, por ejemplo la siguiente
SELECT * FROM (SELECT Nombre_Cancion, Autor_Cancion
FROM dbo.Canciones
WHERE (Id_Estilo = @Estilo_Id)) AS TABLA_VIRTUAL
Pues me da un error de sintaxis... pero si encambio sustituyo el "@Estilo_Id" por un valor concreto, por ejemplo "Rock_And_Roll" no me da ningún problema.
Mhhh... a ver si alguien me hecha una mano y muchísimas gracias de antemano.
Quiero hacer una "Stored procedure" pasándole un id para filtrar los resultados al hacer la consulta. Por ejemplo una sencillita cómo la siguiente...
SELECT Nombre_Cancion, Autor_Cancion
FROM dbo.Canciones
WHERE (Id_Estilo = @Estilo_Id)
Hasta aquí todo perfecto, funciona sin problemas. Pero ahora resulta que quiero convertir esta consulta en una subconsulta para generar otra de más compleja, por ejemplo la siguiente
SELECT * FROM (SELECT Nombre_Cancion, Autor_Cancion
FROM dbo.Canciones
WHERE (Id_Estilo = @Estilo_Id)) AS TABLA_VIRTUAL
Pues me da un error de sintaxis... pero si encambio sustituyo el "@Estilo_Id" por un valor concreto, por ejemplo "Rock_And_Roll" no me da ningún problema.
Mhhh... a ver si alguien me hecha una mano y muchísimas gracias de antemano.
@Estilo_id as un varchar?, fijate como está declarada la variable, seguro es otro tipo o bien la variable
@Estilo_id tiene contenido nulo al momento de la consulta
@Estilo_id tiene contenido nulo al momento de la consulta
Bien, el error me lo daba incluso antes de darle un valor cualquiera. Tienes razón en lo del varchar, de todas maneras, lo que realmente me interesaba era mostrar conceptualmente lo que quería conseguir con un ejemplo más asequible que el real que es más complejo y con nombres de tablas y columnas más crípticos...
En la prueba que he realizado con los datos reales, me ha funcionado perfectamente hasta que he convertido el "Select" en una subquery de otra consulta.
Todo y así, me lo han resuelto tras exponer el mismo problema un poco más elaborado en el foro de "Bases de datos y SQL" (Si quieres ver la respuesta que me dieron al problema, puedes verla en el mensaje "Seleccionar 5 ultimos registros en orden ascendente...".
Supongo que el error estaba en no declarar la variable "@Estilo_Id" debidamente... no se. De todas maneras, esto me ha servido para ponerme en serio en el estudio de la creación de "Stored procedures" cómo dios manda, que ya veo que se aleja un poco de lo que acostumbro a hacer en SQL.
Pues nada, muchísimas gracias de todos modos por responderme.
Att. Edu Couchez
En la prueba que he realizado con los datos reales, me ha funcionado perfectamente hasta que he convertido el "Select" en una subquery de otra consulta.
Todo y así, me lo han resuelto tras exponer el mismo problema un poco más elaborado en el foro de "Bases de datos y SQL" (Si quieres ver la respuesta que me dieron al problema, puedes verla en el mensaje "Seleccionar 5 ultimos registros en orden ascendente...".
Supongo que el error estaba en no declarar la variable "@Estilo_Id" debidamente... no se. De todas maneras, esto me ha servido para ponerme en serio en el estudio de la creación de "Stored procedures" cómo dios manda, que ya veo que se aleja un poco de lo que acostumbro a hacer en SQL.
Pues nada, muchísimas gracias de todos modos por responderme.
Att. Edu Couchez