Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE PROCEDURE MyProc(goodname VARCHAR(32), amount INT)
- AS
- BEGIN
- CREATE TEMPORARY TABLE temp (@qty INT, @price DECIMAL) ENGINE Memory;
- DECLARE cur CURSOR FOR SELECT qty, price
- FROM goods
- WHERE name=goodname
- ORDER BY incomedate DESC;
- SET @amount=0;
- SET @done=0;
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET @done=1;
- OPEN cur;
- cycle: REPEAT
- FETCH cur INTO @qty, @price;
- IF @done=1 THEN LEAVE cycle;
- IF @amount+@qty>=amount then
- INSERT INTO temp(qty,price) SELECT amount-@amount, @price;
- SET @done=1;
- ELSE
- INSERT INTO temp(qty,price) SELECT @qty, @price;
- SET @amount=@amount+@qty;
- END IF;
- UNTIL @done=1 END REPEAT;
- CLOSE cur;
- SELECT * FROM temp;
- DROP TABLE temp;
- END;
- SET @row := 0;
- SELECT @row := @row + 1 AS qty, price FROM table_name LIMIT 3;
Add Comment
Please, Sign In to add comment