CREATEPROCEDURE make_payment ( invoice_id INT, payment_amount DECIMAL(9,2), -- 前一个参数表示数字的总位数(包括小数部分和整数部分),后一个表示小数点后的位数 payment_date DATE ) BEGIN IF payment_amount <=0THEN SIGNAL SQLSTATE'22003'-- sqlstate的错误代码,网上可搜 SET MESSAGE_TEXT ='Invalid payment amount' END IF; UPDATE invoices i SET i.payment_total = payment_amount, i.payment_data = payment_date WHERE i.invoice_id = invoice_id; END $$
DELIMITER $$ CREATEPROCEDURE get_unpaid_invoice_for_client ( client_id INT, OUT invoices_count INT, -- 作为输出参数,需要使用OUT进行标记 OUT invoices_total DECIMAL(9,2) ) BEGIN SELECTCOUNT(*),SUM(invoices_total) INTO invoices_count,invoices_total -- 将查询值传入输出参数 FROM invoices i WHERE i.client_id = client_id AND payment_total =0 END $$ DELIMITER ;