GBase数据库存储过程——批量删除多个数据表的数据

本文介绍了一种通过存储过程批量清空特定前缀的数据库表的方法,避免了逐一执行删除操作带来的不便,提高了效率。

偶尔需要清空一下数据库,重装成本太高。

--清空历史存储过程
DROP Procedure `dap_model`.`delete_datas` ;
 
--创建存储过程
DELIMITER //
CREATE DEFINER="dba"@"%" PROCEDURE "delete_datas"()
begin
    declare v_tableName   varchar(100);
    declare v_sql           varchar(5000);
    declare done1 int default 0;
    declare tablename_cursor cursor for
    select distinct TABLE_NAME from information_schema.tables  where TABLE_NAME like 'A_%' or TABLE_NAME like 'B_%';
 
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done1= 1;
     
    open tablename_cursor ;
       fetch tablename_cursor into v_tableName;
       while done1 = 0 do
           set v_sql = 'TRUNCATE TABLE ' || v_tableName;
           call executeSQL(v_sql);
           fetch tablename_cursor into v_tableName;
       end while;
    close tablename_cursor;     
end //
 
--调用存储过程
call delete_datas()

 

转载于:https://www.cnblogs.com/BrokenSwitch/p/8472124.html

GBase数据库中,存储过程的编写需要遵循特定的语法和结构。以下是一个基本的存储过程编写方法和示例,适用于GBase 8s分布式版本。 ### 存储过程的基本结构 一个存储过程通常包括以下几个部分: 1. **定义存储过程名称和参数**:指定存储过程的名称以及输入、输出参数。 2. **声明变量**:在存储过程中使用的局部变量需要在此部分声明。 3. **执行逻辑**:编写存储过程的核心逻辑,可以包括SQL语句、条件判断、循环等。 4. **返回结果**:如果存储过程需要返回结果,可以通过`RETURN`语句实现。 ### 示例:创建一个简单的存储过程 以下是一个示例,展示如何创建一个存储过程,该过程根据输入的部门ID返回用户ID和用户名: ```sql CREATE PROCEDURE p_get_all_userid (p_partid VARCHAR(50)) RETURNING VARCHAR(50), VARCHAR(50); DEFINE puserid VARCHAR(50); DEFINE pname VARCHAR(50); FOREACH SELECT t1.userid, t1.usercname INTO puserid, pname FROM t1 LEFT JOIN t2 ON t1.userid = t2.userid WHERE t2.roletype IN (1, 2, 3) AND t1.partid = p_partid RETURN puserid, pname WITH RESUME; END FOREACH; END PROCEDURE; ``` ### 解释 - **CREATE PROCEDURE**:用于创建存储过程,`p_get_all_userid`是存储过程的名称,`p_partid`是输入参数。 - **RETURNING**:指定存储过程返回的数据类型。 - **DEFINE**:用于声明局部变量,`puserid`和`pname`是两个局部变量。 - **FOREACH**:这是一个循环结构,用于遍历查询结果集。 - **SELECT ... INTO**:将查询结果赋值给局部变量。 - **RETURN ... WITH RESUME**:返回结果并继续执行循环。 - **END PROCEDURE**:结束存储过程的定义。 ### 调用存储过程 在客户端调用存储过程时,确保使用支持多结果集的GBase 8s分布式客户端库。调用存储过程的语法如下: ```sql EXECUTE PROCEDURE p_get_all_userid('part123'); ``` ### 注意事项 - 确保在创建存储过程时,名和字段名正确无误。 - 如果存储过程需要返回多个结果集,客户端必须能够处理多结果集。 - 在编写存储过程时,尽量避免使用复杂的逻辑,以提高性能和可维护性。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值