ВЫБОР MYSQL с пользовательской функцией - PullRequest
0 голосов
/ 03 сентября 2018

Я хочу иметь возможность выбирать записи, используя пользовательские функции в MySQL.

Я попытался следующий код, но я получил нулевой результат, где есть данные:

SELECT id, getAmountS(id) FROM product WHERE id=2

DELIMITER $$
CREATE FUNCTION getAmountS(pid INT(11)) RETURNS DOUBLE(12, 2) DETERMINISTIC BEGIN
    DECLARE sellvalue DOUBLE(12, 2) ;
    SELECT
        SUM( CASE WHEN s.invoicestatus = 'Active' THEN ROUND(
        (r.rate * 1 -((r.rate * 1) * r.discount / 100))+((
        r.rate * 1 -( (r.rate * 1) * r.discount / 100)) * r.gstrate / 100),
                2  ) ELSE 0 END) INTO sellvalue FROM  morder r
        LEFT JOIN sale s ON  r.saleid = s.id
        WHERE r.productid = pid;
    RETURN sellvalue;
END $$

Пожалуйста, помогите.

Таблица: товар

id(INT), productname(VARCHAR), manufacturer(INT)

Таблица: Мордер

id(INT), saleid(INT), gstrate(INT), rate(DOUBLE), productid(INT), discount(DOUBLE) 

Таблица: продажа

id(INT), invoiceno(VARCHAR), invoicestatus(ENUM), invoiceDate(DATE)

Следующее утверждение отлично работает:

SELECT SUM( CASE WHEN s.invoicestatus = 'Active' THEN ROUND(
        (r.rate * 1 -((r.rate * 1) * r.discount / 100))+((
        r.rate * 1 -( (r.rate * 1) * r.discount / 100)) * r.gstrate / 100), 2  ) ELSE 0 END) sellvalue FROM  morder r
        LEFT JOIN sale s ON  r.saleid = s.id
        WHERE r.productid = 30340

1 Ответ

0 голосов
/ 03 сентября 2018

Вам нужно проверить свой код от базового до сложного. Добавляйте одну вещь каждый раз, пока не найдете проблему.

Начиная с этой базовой функции. Я могу вернуть значение, чтобы структура функции была в порядке. проблема в запросе

SQL DEMO

CREATE FUNCTION getAmountS(pid INT(11)) RETURNS DOUBLE(12, 2) DETERMINISTIC BEGIN
    DECLARE sellvalue DOUBLE(12, 2) ;
    SELECT 2*pid INTO sellvalue FROM  Table1
    WHERE id = pid;
    RETURN sellvalue;
END;

Если вы добавите свои собственные данные в демонстрационный ролик rextexter, мы сможем копнуть глубже и посмотреть, в чем проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...