编程需要,碰到存储过程,把丢的东西温习了一遍,之前学的是sql server 的存储过程,个人觉得这两个大同小异
下方是我拿别人的mysql语句来改的存储过程
CREATE DEFINER=`app_user`@`%` PROCEDURE `ShouYinAdvSearch`(`storeId` int(11),`djzt1` varchar(20),`djzt2` varchar(20),`jcsj` varchar(50),`start` int(11),`rows` int(11))
BEGIN
SELECT bpjd_jcd.Id,
bpjd_jcd.Store_Id,
bpjd_jcd.No ,
khgx_car.Kh_Id,
bpjd_jcd.Jcsj AS Time,
bpjd_jcd.Car_Id,
khgx_car.No AS Plate,
khgx_car.Cartype_Id ,
bpjd_jcd.Sxr AS Contact,
bpjd_jcd.Wxlx_Id,
jczl_wxlx.Name AS Repairtype_Name ,
bpjd_jcd.Djzt AS State,
IFNULL(SUM(bpjd_jcd_fwxm.Money),0) AS LaborCost,
IFNULL(SUM(bpjd_jcd_qtxm.Money),0) AS OtherCost,
IFNULL(TEMP1.PartsCost,0) AS PartsCost
FROM bpjd_jcd
LEFT JOIN khgx_car ON khgx_car.Id=bpjd_jcd.Car_Id
LEFT JOIN jczl_wxlx ON jczl_wxlx.Id=bpjd_jcd.Wxlx_Id
LEFT JOIN bpjd_jcd_fwxm ON bpjd_jcd_fwxm.Jcd_Id=bpjd_jcd.Id
LEFT JOIN bpjd_jcd_qtxm ON bpjd_jcd_qtxm.Jcd_Id=bpjd_jcd.Id
LEFT JOIN (
SELECT Jcd_Id,SUM(Money) as PartsCost FROM ckgl_wxltl WHERE ckgl_wxltl.State=1 GROUP BY Jcd_Id
) AS TEMP1 ON TEMP1.Jcd_Id=bpjd_jcd.Id
WHERE bpjd_jcd.Djzt in (djzt1,djzt2)
AND bpjd_jcd.Store_Id=storeId
AND bpjd_jcd.Jcsj like jcsj
GROUP BY bpjd_jcd.Id ORDER BY bpjd_jcd.Jcsj DESC
LIMIT start,rows;
END;
DEFINER定义者,DEFINER=`app_user`@`%` 表示定义者是谁
2. PROCEDURE `ShouYinAdvSearch`
PROCEDURE存储过程,PROCEDURE `ShouYinAdvSearch` 表示一个定义一个叫做ShouYinAdvSearch的存储过程
3.存储过程名后跟着括号,括号里是定义的参数,
4.IFNULL(a,b)表示,如果a为null,就取b的值。
5.limit start,rows 显示查询到的记录的第start条到rows条
其他不作介绍,比较常见且我写博客是给自己看的。