Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Error Parametro Pivot - Create Procedure

Estas en el tema de Error Parametro Pivot - Create Procedure en el foro de SQL Server en Foros del Web. Hola a todos, resulta que estoy trabajando con C# , ASP.Net y SQL Server 2008, estoy pivoteando unos datos pero sin embargo la consulta me ...
  #1 (permalink)  
Antiguo 25/04/2011, 14:39
 
Fecha de Ingreso: febrero-2010
Mensajes: 7
Antigüedad: 14 años, 9 meses
Puntos: 0
Error Parametro Pivot - Create Procedure

Hola a todos, resulta que estoy trabajando con C# , ASP.Net y SQL Server 2008, estoy pivoteando unos datos pero sin embargo la consulta me genera un error , especificamente me dice que debo declarar la variable @asig, les muestro la consulta para que me den su idea:

Aqui esta el procedimiento:

CREATE PROCEDURE NOTAS
@asig nvarchar(4000)
AS
DECLARE @cols NVARCHAR(4000)
SELECT @cols = COALESCE(@cols +',['+NOTA_NOMBRE+']', '['+NOTA_NOMBRE+']')
FROM Nota
GROUP BY NOTA_NOMBRE

DECLARE @query NVARCHAR(4000)
SET @query = 'SELECT * FROM Nota WHERE ASIG_ID = @asig
PIVOT(MAX(NOTA) FOR NOTA_NOMBRE IN('+@cols+')) AS PivotTable'
EXECUTE(@query)

y aqui la llamada:

DataTable dt = new DataTable();
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrin gs["sica"].ToString()))
{
connection.Open();
SqlCommand cmd = new SqlCommand("NOTAS", connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@asig", idasignatura);

SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
}

como les dije el problema, es que no reconocer el parametro @asig como puedo solucionar esto??? Gracias de antemano.
  #2 (permalink)  
Antiguo 25/04/2011, 18:37
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Error Parametro Pivot - Create Procedure

Claro que no reconoce el parametro, porque tu query es DINAMICO, entonces deberia haber algo como:


SET @query = 'SELECT * FROM Nota WHERE ASIG_ID = ' + @asig +'
PIVOT(MAX(NOTA) FOR NOTA_NOMBRE IN('+@cols+')) AS PivotTable'

Asi como estas pasando @cols
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 25/04/2011, 18:53
 
Fecha de Ingreso: febrero-2010
Mensajes: 7
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Error Parametro Pivot - Create Procedure

Hola iislas muchas gracias por responder, seguramente ahora esta tomando el parametro, por que me aparece el siguiente error:
Sintaxis incorrecta cerca de 'A07'.
el tema esta que el codigo de mis asignaturas son del tipo:
1A07
1A08
1A09
....
como soluciono esto entonces??
gracias nuevamente!
  #4 (permalink)  
Antiguo 26/04/2011, 15:42
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Error Parametro Pivot - Create Procedure

Antes de enviar a ejecutar tu sentencia, deberias primero revisar que contiene, ¿sabes que contiene la sentencia quq pretendes ejectuar?
__________________
MCTS Isaias Islas

Etiquetas: create, pivot, procedure, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:25.