SQL Server - ERROR EN STORE PROCEDURE

 
Vista:
Imágen de perfil de Eduardo
Val: 16
Ha aumentado su posición en 3 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

ERROR EN STORE PROCEDURE

Publicado por Eduardo (5 intervenciones) el 18/02/2021 01:08:52
Buenas tardes, espero me puedan ayudar.
Al ejecutar mi store procedure me da el siguiente error Msg 102, Level 15, State 1, Procedure sp_ActualizarCantidadPrecio, Line 14
Incorrect syntax near ','.
, Me pueden ayudar a identificar el error por favor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CREATE PROCEDURE sp_ActualizarCantidadPrecio @n_cantidad DECIMAL(10,2), @n_precio DECIMAL (10,2), @id VARCHAR (50)
AS
BEGIN
 DECLARE @nueva_existencia DECIMAL (38,2);
 DECLARE @nuevo_total DECIMAL  (38,2);
 DECLARE @nuevo_precio DECIMAL (38,2);
 
 DECLARE @existencia_actual DECIMAL (38,2);
 DECLARE @total_actual DECIMAL  (38,2);
 DECLARE @precio_actual DECIMAL  (38,2);
 
 DECLARE @cantidad_actual DECIMAL  (38,2);
 DECLARE @pre_actual DECIMAL  (38,2);
 SELECT cantidad, precio_unitario INTO cantidad_actual,pre_actual FROM Productos WHERE id_producto = id;
 SET nueva_existencia = cantidad_actual + n_cantidad;
 SET nuevo_total = (cantidad_actual * pre_actual) + (n_cantidad * n_precio);
 SET nuevo_precio = nuevo_total / nueva_existencia;
 
 UPDATE Productos SET cantidad = nueva_existencia, precio_unitario = nuevo_precio WHERE id_producto = id;
 SELECT nueva_existencia, nuevo_precio;
END
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Eduardo
Val: 16
Ha aumentado su posición en 3 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

ERROR EN STORE PROCEDURE

Publicado por Eduardo (5 intervenciones) el 18/02/2021 17:24:15
Buenos dias.

Ya intente quitando los punto y coma, sigue sin funcionar. Primero una disculpa por mi inexperiencia, es la primera vez que trabajo con SQL Server. Lo estoy incluyendo en mi desarrollo PHP, lo que pretendía hacer es crear un stored procedure para agrega existencia a mis productos que ya tengo registrados en mi inventario y después calcular un promedio por la variación de precios por eso después agregue los SET, pero por lo que leo no tengo ni idea para crear un stored procedure en SQL server así que mejor intentare por otro método. Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

ERROR EN STORE PROCEDURE

Publicado por Isaias (4558 intervenciones) el 18/02/2021 16:05:16
Como bien dice Jorge, evitar el sp_ a menos de que quieras que tu procedimiento se almacene siempre en la cache, quitar el ; , en un procedimiento no funciona, por otro lado, esta instruccion:

1
2
3
4
SELECT cantidad, precio_unitario INTO cantidad_actual,pre_actual FROM Productos WHERE id_producto = id;
 SET nueva_existencia = cantidad_actual + n_cantidad;
 SET nuevo_total = (cantidad_actual * pre_actual) + (n_cantidad * n_precio);
 SET nuevo_precio = nuevo_total / nueva_existencia;

No creo que funcione, porque por un lado haces un SELECT, creando una nueva tabla cantidad_actual,pre_actual , pero despues haces SET que no tiene ni pies ni cabeza
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Eduardo
Val: 16
Ha aumentado su posición en 3 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

ERROR EN STORE PROCEDURE

Publicado por Eduardo (5 intervenciones) el 18/02/2021 17:23:22
Entiendo, primero una disculpa por mi inexperiencia, es la primera vez que trabajo con SQL Server. Lo estoy incluyendo en mi desarrollo PHP, lo que pretendía hacer es crear un stored procedure para agrega existencia a mis productos que ya tengo registrados en mi inventario y después calcular un promedio por la variación de precios por eso después agregue los SET, pero por lo que leo no tengo ni idea para crear un stored procedure en SQL server así que mejor intentare por otro método. Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

ERROR EN STORE PROCEDURE

Publicado por Isaias (4558 intervenciones) el 18/02/2021 18:04:00
Un SET, agrega valores, a VARIABLES, por ejemplo

1
2
3
4
5
DECLARE @MyNombre varchar(50)
DECLARE @MyApellido varchar(50)
 
SET @MyNombre = 'Isaías'
SET @MyApellido = 'islas'

Si quieres tomar datos de un SELECT y ponérselo a las variables, entonces

1
SELECT  @MyNombre = Nombre, @MyApellido  = Apellido FROM Cliente WHERE......

Pero aqui, ya no es un SET, es asignación de valores a variables de un SELECT
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Eduardo
Val: 16
Ha aumentado su posición en 3 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

ERROR EN STORE PROCEDURE

Publicado por Eduardo (5 intervenciones) el 19/02/2021 00:20:46
Muchas gracias, por fin me funciono.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

ERROR EN STORE PROCEDURE

Publicado por Isaias (4558 intervenciones) el 19/02/2021 00:45:31
Que bueno, no se que cambios le hiciste, pero esta instruccion WHERE id_producto = id;, ni en el SELECT ni en el UPDATE debe funcionar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo
Val: 16
Ha aumentado su posición en 3 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

ERROR EN STORE PROCEDURE

Publicado por Eduardo (5 intervenciones) el 19/02/2021 21:17:19
Lo hice de la siguiente manera, no se si sea lo correcto (seguramente no) pero cumple su función, asi quedo :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
CREATE PROCEDURE Actualiza_PrecioCantidad
 
	@n_cantidad DECIMAL(18,2),
	@n_precio DECIMAL(18,2),
	@id VARCHAR(50)
AS
BEGIN
DECLARE @cantidad_actual DECIMAL (10,2)
DECLARE @pre_actual DECIMAL (10,2)
DECLARE @nueva_existencia DECIMAL (10,2)
 DECLARE @nuevo_total DECIMAL (10,2)
 DECLARE @nuevo_precio DECIMAL (10,2)
 
 DECLARE @existencia_actual DECIMAL (10,2)
 DECLARE @total_actual DECIMAL (10,2)
 
SELECT @cantidad_actual = cantidad, @pre_actual = precio_unitario, @total_actual = total  FROM Productos WHERE id_producto = @id
 
SET @nueva_existencia = @cantidad_actual + @n_cantidad
 SET @nuevo_total = (@cantidad_actual * @pre_actual) + (@n_cantidad * @n_precio)
 SET @nuevo_precio = @nuevo_total / @nueva_existencia
 SET @total_actual = @nuevo_total * @nuevo_precio
 
 UPDATE Productos SET cantidad = @nueva_existencia, precio_unitario = @nuevo_precio, total = @total_actual WHERE id_producto = @id
 
 
END
 
GO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar