Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Por que da otros resultados un Sp de sql server usando cursores (https://www.clubdelphi.com/foros/showthread.php?t=34999)

alexander66 28-08-2006 16:14:22

Por que da otros resultados un Sp de sql server usando cursores
 
saludos club, disponemos de sql server 2000 standard edition, el cual he creado un store procedure para hacer unas actualizaciones de precios de ventas y consiste en que aumenta el precio de venta en un 10 % si la existencia es menor a 1000 en caso contrario un 5 %
Código PHP:

la tabla es esta:
CREATE TABLE [dbo].[Productos] (
 [
Prodcuto_id] [intIDENTITY (11NOT NULL ,
 [
producto] [varchar] (50COLLATE Latin1_General_BIN NULL ,
 [
existencia] [floatNULL ,
 [
preciovta] [floatNULL ,
 [
Porcentaje] [floatNULL
ON [PRIMARY

El sp es el siguiente pero se supone que con un bucle de cursor me actualizaria el precio_venta pero no es asi me da otro valores como resultado, sin importarle que valor tenga en el campo existencia.

Código PHP:

CREATE PROCEDURE incrementa AS
Declare @
Producto varchar(50)
Declare @
Existencia Numeric(18,2)
Declare 
curejemplo  Cursor For
Select productoexistencia from Productos
open curejemplo
Begin Transaction
Fetch next from curejemplo into 
@Producto, @Existencia
If @@Fetch_status 0
 begin
 
if @Existencia 1000
 update Productos set preciovta 
preciovta 1.10
 
else
 if @
Existencia 1000
 update Productos set preciovta 
preciovta 1.05

Fetch next from curejemplo into 
@Producto, @Existencia
end
Commit Transaction
close curejemplo
Deallocate curejemplo
GO 

Gracias, tambien pense en modificar el sp de este modo y alamcenar el porcentaje en el campo Porcentaje y aun asi no da el resultado apropiado preciovta = preciovta * 0.1.

edgusano 28-08-2006 18:44:12

Revisa la condicion del update puesto que por cada pasada del cursos esta actualizando todos los registros de la tabla productos y no en el que va el cursor.

luisgutierrezb 28-08-2006 18:58:18

Bueno, en primera, no veo un bucle que te haga recorrer TODOS los registros de la tabla, por eun ejemplo un while @@Fetch_status = 0
otra cosa, en el update le estas diciendo que te actulice TODOS los campos, no tiene una clausula where que identifique especificamente el campo...

alexander66 29-08-2006 15:15:26

oK gracias club ya modifique el sp y funciono estos son los cambios, en caso dado corriganme si hay algo mal.


Código PHP:

while @@Fetch_status 0
 begin
 
if @Existencia 1000
 update Productos set preciovta 
preciovta 1.10 where prod_id= @ID
...
un while qse ejecute mientras y un where para saber a que registro actualizar




La franja horaria es GMT +2. Ahora son las 18:16:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi