Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: lorblack en 7 Noviembre 2016, 19:28 pm



Título: Error leve en procedure SQL server 2012
Publicado por: lorblack en 7 Noviembre 2016, 19:28 pm
Este es mi código

Citar
   CREATE PROC insertar_producto
   @cod int OUTPUT,
   @nom varchar(100),
   @pre decimal(18,2),
   @img varchar(100)
   AS
   BEGIN
   SET NOCOUNT ON;
   SELECT  ISNULL(MAX(codigoProducto),+ 1) INTO @cod FROM producto
   INSERT INTO producto (codigoProducto, nombre, precio, imagen) VALUES (@cod, @nom, @pre, @img)
   END

el problema es que me aparece con un error en la línea del SELECT INSNULL en la variable @cod, no sé qué estoy haciendo mal, el error.
Citar
Sintaxis incorrecta cerca de '@cod'.


Título: Re: Error leve en procedure SQL server 2012
Publicado por: MCKSys Argentina en 7 Noviembre 2016, 19:34 pm
Hola!

No sé mucho del tema, pero me parece que la coma delante del +1 está demás?

Código:
SELECT  ISNULL(MAX(codigoProducto),+ 1) INTO @cod FROM producto

Saludos!


Título: Re: Error leve en procedure SQL server 2012
Publicado por: lorblack en 7 Noviembre 2016, 19:41 pm
No, la coma debe ir por la sintaxis del IFNULL, puesto que los dos parámetros de estos serian lo que hay antes y después de la coma, el + es sólo para aumentar en 1 el número que hay anteriormente.


Título: Re: Error leve en procedure SQL server 2012
Publicado por: fran800m en 7 Noviembre 2016, 19:42 pm
Creo recordar que isnull es una funcion que devuelve el segundo parámetro si el primero resulta null

¿Puede ser ésto lo que quieres hacer?

SELECT  ISNULL(MAX(codigoProducto) + 1, 1) INTO @cod FROM producto


Título: Re: Error leve en procedure SQL server 2012
Publicado por: lorblack en 7 Noviembre 2016, 19:45 pm
Me sigue dando el mismo error.