Синтаксическая ошибка хранимой процедуры mysql - PullRequest
0 голосов
/ 15 апреля 2009

Хорошо, это только вторая хранимая процедура, которую я написал. Я думаю, вы поймете идею, я пытаюсь закрыть кредитную линию, и все счета, расходы, заметки и т. Д. С ним. Но я получаю синтаксическую ошибку. Цель состоит в том, чтобы позвонить close_account_proc (398985994)

DELIMITER $$

CREATE
    PROCEDURE `cc`.`close_account_proc`(cid INT)
    @uid_usr := uid_usr FROM credit_acc WHERE type_acc = 'init' AND credit_used_acc = cid;
    UPDATE credit_acc SET status_acc = 'closed', void_date_acc = NOW() WHERE credit_used_acc = cid;
    UPDATE payment_acc SET status_acc = 'voided', void_date_acc = NOW()  WHERE creditid_acc = cid;
    UPDATE sbal_sbl SET status_sbl = 'voided', void_date_sbl = NOW()  WHERE credit_used_acc = cid;
    INSERT INTO notes_not SET uid_usr = @uid_usr, initials_not = 'SYS',status_not = 'complete', date_not = NOW(), text_not = 'Closed credit line '.cid;
    UPDATE invoices_inv SET status_inv = 'voided', void_date_inv = NOW()  WHERE credit_used_acc = cid;
    BEGIN
    END$$

DELIMITER ;

Итак, я получаю эту ошибку: У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с '@uid_usr: = uid_usr из credit_acc, где type_acc =' init 'и credit_used_acc' в строке 5.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 15 апреля 2009
DELIMITER $$

CREATE PROCEDURE `cc`.`close_account_proc`(cid INT)
BEGIN
    /* Check that it's what you wanted */
    SELECT  uid_usr
    INTO    @uid_usr
    FROM    credit_acc
    WHERE   type_acc = 'init'
            AND credit_used_acc = cid;

    UPDATE credit_acc SET status_acc = 'closed', void_date_acc = NOW() WHERE credit_used_acc = cid;
    UPDATE payment_acc SET status_acc = 'voided', void_date_acc = NOW()  WHERE creditid_acc = cid;
    UPDATE sbal_sbl SET status_sbl = 'voided', void_date_sbl = NOW()  WHERE credit_used_acc = cid;

    /* Check that it's what you wanted */

    INSERT
    INTO    notes_not (uid_usr, initials_not, status_not, date_not, text_not)
    VALUES  (@uid_usr, 'SYS', 'complete', NOW(), CONCAT('Closed credit line ', cid));

    UPDATE invoices_inv SET status_inv = 'voided', void_date_inv = NOW()  WHERE credit_used_acc = cid;
END
$$

DELIMITER ;
0 голосов
/ 15 апреля 2009

Хм, я не специалист по хранимым процедурам, но не так ли.

CREATE PROCEDURE `cc`.`close_account_proc`(cid INT)
    BEGIN
        // your stuff
    END$$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...