Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/08/2010, 14:16
Baldur
 
Fecha de Ingreso: mayo-2005
Ubicación: Vimianzo. A Coruña
Mensajes: 230
Antigüedad: 19 años
Puntos: 1
Error al crear Stored Procedure

Hola!
Estoy intentado crear un Procedimiento almacenado desde el MySQL Workbench pero este me alerta de un error en el primer SET sqlStatement (también he tenido que cambiar nvarchar(max) por nvarchar(1000)):

Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. CREATE PROCEDURE `galiciaparty`.`spGetAllEventos` (IN startIndex int,IN pageSize int,IN sortBy nvarchar(30),OUT totalEventos int)
  4. DECLARE sqlStatement nvarchar(1000);
  5. DECLARE upperBound int;
  6.    
  7.     IF startIndex  < 1 THEN SET startIndex = 1;
  8.     IF pageSize < 1 THEN SET pageSize = 1;
  9.     SET upperBound = startIndex + pageSize;
  10.     Select totalEventos=Count(*) From gp_eventos_prin
  11.     SET sqlStatement ='SELECT E.id_evento, E.titulo, E.fecha_evento, E.lugar
  12.                       FROM (SELECT  ROW_NUMBER() OVER(ORDER BY ' + sortBy + ') AS rowNumber, *
  13.                             FROM    Employee
  14.                            ) AS E
  15.                       WHERE  rowNumber >= ' + CONVERT(varchar(9), startIndex) + ' AND rowNumber <  ' + CONVERT(varchar(9), upperBound)
  16.   exec (sqlStatement)
  17.  
  18. END$$
  19. END$$

Este store procedure lo voy a ejecutar desde C#.NET, por eso le tengo que pasar parámetros. Lo quiero utilizar para paginar los resultados.
Ah, y este procedure lo estoy "portando" de SQL server, donde funciona perfectamente a MySQL...pero no logro que funcione...
Os dejo aquí si quereis el original de SQL Server:
Código SQL:
Ver original
  1. CREATE PROCEDURE spGetAllEmployee
  2.     (
  3.     @startIndex     INT,
  4.     @pageSize       INT,
  5.     @sortBy     nvarchar(30),
  6.     @totalEmployees INT OUTPUT     
  7.     )
  8. AS
  9.     SET NOCOUNT ON
  10.  DECLARE
  11.     @sqlStatement nvarchar(MAX),    
  12.     @upperBound INT
  13.   IF @startIndex  < 1 SET @startIndex = 1
  14.   IF @pageSize < 1 SET @pageSize = 1
  15.   SET @upperBound = @startIndex + @pageSize
  16.  SELECT @totalEmployees=COUNT(*) FROM Employee
  17.   SET @sqlStatement = ' SELECT E.EmployeeID, E.EmployeeCode, E.Name, E.Department, E.Salary
  18.                FROM (
  19.                      SELECT  ROW_NUMBER() OVER(ORDER BY ' + @sortBy + ') AS rowNumber, *
  20.                      FROM    Employee
  21.                     ) AS E
  22.                WHERE  rowNumber >= ' + CONVERT(VARCHAR(9), @startIndex) + ' AND
  23.                       rowNumber <  ' + CONVERT(VARCHAR(9), @upperBound)
  24.   EXEC (@sqlStatement)

Me podeis hechar una ayudita a ver si logro solucionar este fallo?

Muchas gracias por todo y un Saludo!
__________________
Técnico Superior en Desarrollo de Apliciones Informáticas

Última edición por Baldur; 01/08/2010 a las 14:35