Exercises: Functions, Triggers and Transactions - задача 12.Deposit Money
Защо ми дава само 40 точки в judge? Какво ли не пробвах.
CREATE PROCEDURE usp_deposit_money(a_account_id INT(11), money_amount DECIMAL(65,4))
BEGIN
START TRANSACTION;
IF(money_amount<=0 OR money_amount IS NULL OR a_account_id IS NULL OR a_account_id<1) THEN ROLLBACK;
ELSE
UPDATE accounts
SET balance = balance + money_amount
WHERE id = a_account_id;
END IF;
END
ами и твоето решение дава 40 точки
Сигурно са сменили нещо по тестовете в такъв случай, беше си 100/100 в предното издание на курса...
Може би в тези две изречения се крие отговора.
Make sure to guarantee valid positive money_amount with precision up to fourth sign after decimal point. The procedure should produce exact results working with the specified precision.
Има ли начин да се проверява дали подаденото число е до точно 4тири знака след десетичната запетая?
Моето решение получава 60/100 :https://github.com/DimovDimo/Software-University-SoftUni/blob/master/Java-DB-September-2018/Database-Basics-MySQL-September-2018/16%2CDatabase%20Programmability%20-%20Exercise/Work/PART%20II%20%E2%80%93%20Queries%20for%20Bank%20Database/12.%20Deposit%20Money.sql
Не можах да изкарам 100/100
За да вземем количеството знаци след запетаята, можем да използваме:
Проверяваме дали числото е цяло. Ако да, връщаме 0 знака. В друг случай взимаме дължината на стринга, който се получава от разликата на числото с неговата закръглена надолу стойност. После вадим 2, защото всеки подобен стринг започва с '0.', а това има дължина 2. Резултата е количеството знаци след запетаята.
не че нещо ама каква е тая тъпотия? ще проверяваш стринга и тн ?
като имаш Decimal(18,4) примерно и това ти осигурява 4те знака.
По-скоро е от тестовете в judge нещо се е променило в последните ъпдейти на Mysql а те не са ъпдейтнати,най-вероятно.и от там идва разминаването. Иначе имам подобно на колегата Севов решение и аз карах mysql миналия октомври.