oracle存储过程批量创建索引,用存储过程批量给表添加字段

把表都建完了,忽然发现少个创建时间,一个一个加字段又比较麻烦,索性来个procedure......

一、创建存储过程

CREATE PROCEDURE `BATCH_TABLE_ADD_COLUMN`();

二、具体内容

BEGIN

-- 临时变量 TABLE NAME

DECLARE T_NAME VARCHAR(256) DEFAULT NULL;

DECLARE T_SQL VARCHAR(256) DEFAULT NULL;

-- 游标相关 CURSOR TABLE_NAMES

DECLARE C_ALL_TABLE CURSOR FOR SELECT table_name FROM information_schema.TABLES WHERE table_schema = 'wmmm_confidence' AND table_name REGEXP 'magic_wand';

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET T_NAME = NULL;

OPEN C_ALL_TABLE;

FETCH C_ALL_TABLE INTO T_NAME;

WHILE(T_NAME IS NOT NULL) DO

SET @T_SQL = CONCAT('ALTER TABLE ', T_NAME, ' ADD COLUMN CREATE_TIME datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT \'创建时间\'');

PREPARE statm FROM @T_SQL;

EXECUTE statm;

FETCH C_ALL_TABLE INTO T_NAME;

END WHILE;

CLOSE C_ALL_TABLE;

END

三、题外话---游标多个参数

-- 游标相关 APPLY_INFO

DECLARE C_APPLY_INFO CURSOR FOR SELECT ID, USER_ID, MOBILE from apply_info WHERE EXTERNAL_STATUS = 'SEND' and TIMEDIFF(NOW(), CREATE_TIME) > 1000;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET T_USER_ID = NULL, T_PHONE_NO = NULL;

OPEN C_APPLY_INFO ;

FETCH C_APPLY_INFO INTO T_APPLY_INFO_ID, T_USER_ID, T_PHONE_NO;

WHILE(T_APPLY_INFO_ID IS NOT NULL AND T_USER_ID IS NOT NULL AND T_PHONE_NO IS NOT NULL) DO

-- 省略业务逻辑...

FETCH C_APPLY_INFO INTO T_APPLY_INFO_ID, T_USER_ID, T_PHONE_NO;

END WHILE;

CLOSE C_APPLY_INFO ;

END

四、题外话---两张遍历方式

BEGIN

-- 临时变量

DECLARE T_ID BIGINT(32) DEFAULT NULL;

DECLARE T_NAME VARCHAR(64) DEFAULT NULL;

-- 游标相关 APPL_INFO

DECLARE C_ORDER_DETAIL CURSOR FOR SELECT ID, PRODUCT_NAME from order_detail;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET T_ID = NULL, T_NAME = NULL;

OPEN C_ORDER_DETAIL;

FETCH C_ORDER_DETAIL INTO T_ID, T_NAME;

-- 方法 1

-- AAA: LOOP

-- SELECT T_ID, T_NAME;

-- FETCH C_ORDER_DETAIL INTO T_ID, T_NAME;

-- IF T_ID IS NULL AND T_NAME IS NULL THEN

-- LEAVE AAA;

-- END IF;

-- END LOOP;

-- 方法 2

WHILE(T_ID IS NOT NULL AND T_NAME IS NOT NULL) DO

SELECT T_ID, T_NAME;

FETCH C_ORDER_DETAIL INTO T_ID, T_NAME;

END WHILE;

CLOSE C_ORDER_DETAIL;

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值