Guest User

Untitled

a guest
Mar 23rd, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. CREATE PROCEDURE MyProc(goodname VARCHAR(32), amount INT)
  2. AS
  3. BEGIN
  4. CREATE TEMPORARY TABLE temp (@qty INT, @price DECIMAL) ENGINE Memory;
  5. DECLARE cur CURSOR FOR SELECT qty, price
  6. FROM goods
  7. WHERE name=goodname
  8. ORDER BY incomedate DESC;
  9. SET @amount=0;
  10. SET @done=0;
  11. DECLARE CONTINUE HANDLER FOR NOT FOUND SET @done=1;
  12. OPEN cur;
  13. cycle: REPEAT
  14. FETCH cur INTO @qty, @price;
  15. IF @done=1 THEN LEAVE cycle;
  16. IF @amount+@qty>=amount then
  17. INSERT INTO temp(qty,price) SELECT amount-@amount, @price;
  18. SET @done=1;
  19. ELSE
  20. INSERT INTO temp(qty,price) SELECT @qty, @price;
  21. SET @amount=@amount+@qty;
  22. END IF;
  23. UNTIL @done=1 END REPEAT;
  24. CLOSE cur;
  25. SELECT * FROM temp;
  26. DROP TABLE temp;
  27. END;
  28.  
  29. SET @row := 0;
  30. SELECT @row := @row + 1 AS qty, price FROM table_name LIMIT 3;
Add Comment
Please, Sign In to add comment