MySQL 中,创建存储过程的 SQL 查询并不是通过“保存”的方式来实现的,而是通过执行带有 CREATE PROCEDURE 语句的 SQL 语句将其定义写入数据库中。下面是一些关键点,以帮助理解创建存储过程的具体步骤以及如何在工具(如 Navicat)中进行操作:

存储过程的创建与执行

  1. 定义存储过程: 你通过编写一个 CREATE PROCEDURE 语句在 MySQL 中定义存储过程。这个过程可以包含输入输出参数以及具体的 SQL 查询逻辑。

  2. 执行查询: 你通过执行这个定义语句,MySQL 会把它作为一个存储过程存储在数据库中。当你执行这条查询时,数据库会“保存”你定义的存储过程。

  3. 示例:

  • 假设你要创建一个存储过程 GetCouponSummary,其 SQL 语句如下所示:

    CREATE PROCEDURE GetCouponSummary(IN input_date DATE)
    BEGIN
       SELECT  
           cd.price AS '优惠券金额',  
           COUNT(cd.id) AS '数量'  
       FROM  
           coupon_detail cd  
           INNER JOIN coupon c ON cd.order_no = c.order_no  
       WHERE  
           c.`status` = 1   
           AND c.order_no IN (  
               SELECT DISTINCT(order_no)  
               FROM coupon_detail  
               WHERE begin_date < DATE_SUB(input_date, INTERVAL 8 MONTH)  
               AND trade_no IS NULL  
               AND package_no IS NOT NULL  
           )  
           AND cd.price != 50   
           AND (cd.coupon_state = 'WAITE' OR cd.coupon_state = 'SENDED')   
           AND cd.package_no <> 'DKVIP_120'   
       GROUP BY  
           cd.price;
    END;
    
  1. Navicat 中执行并保存:
  • Navicat 中,你并不需要手动创建文件来“保存”存储过程。只需将上述 SQL 代码放入新的查询窗口中,点击运行按钮将其执行。
  • 当你执行这个查询后,MySQL 将会把这个存储过程保存到你所指定的数据库中。
  • 调用示例。
    -- CALL 关键字
    CALL GetCouponSummary('2025-01-01')
    

结论

  • 每次你执行包含 CREATE PROCEDURESQL 语句,都会创建(或更新,如果已经存在同名过程)一个存储过程。
  • 存储过程定义并不需要单独保存为文件,它会在执行的数据库中保留,直到被删除或更改。
  • 你可以查看已创建的存储过程,通常在 Navicat 的数据库视图中会有一个名为“存储过程”的节点,可以查看所有已定义的存储过程。

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注