改成mysql的5.6版本
时间: 2024-12-25 15:30:52 浏览: 11
由于MySQL 5.6语法与5.7有所不同,这里是对原始存储过程稍作调整以便于在MySQL 5.6环境中运行:
```sql
DELIMITER //
CREATE PROCEDURE EBANK_CANCEL_CUST_INFO_LINK_DEMO (
IN in_groupNo VARCHAR(20),
IN in_channel VARCHAR(4),
OUT out_retcode VARCHAR(10)
)
BEGIN
SET @out_retcode := '0';
DECLARE @sql_command VARCHAR(8000) CHARSET utf8;
DECLARE @sql_flag CHAR(1);
DECLARE @groupNoPattern VARCHAR(30);
START TRANSACTION;
DECLARE sqlCursor CURSOR FOR SELECT LDB_SQLTEXT, LDB_SQLIKEFLAG FROM ebanklink.EB_BACKUPSQL WHERE LDB_SQLTYPE = 'EBANK_CANCEL_CUST_INFO_LINK';
OPEN sqlCursor;
DECLARE EXIT HANDLER FOR NOT FOUND SET done := 1;
read_loop: LOOP
FETCH sqlCursor INTO @sql_command, @sql_flag;
IF @sql_flag = '1' THEN
SET @groupNoPattern = CONCAT('%', in_groupNo, '%');
SET @sql_command = REPLACE(@sql_command, '?', '%' + @groupNoPattern + '%');
ELSE
SET @sql_command = REPLACE(@sql_command, '?', in_groupNo);
END IF;
PREPARE stmt FROM @sql_command;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END LOOP;
CLOSE sqlCursor;
COMMIT;
END;;
DELIMITER ;
```
更改点包括:
1. 将`VARCHAR(8000)`更改为`VARCHAR(8000) CHARSET utf8`,因为MySQL 5.6不支持`CHARSET utf8mb4`。
2. `DECLARE`后的变量声明使用@符号代替,这是MySQL 5.6的变量前缀。
3. 使用`DECLARE EXIT HANDLER`代替`DECLARE CONTINUE HANDLER`,因为5.6版本没有`CONTINUE HANDLER`。
4. 更改`LIKE`操作符的处理,不再需要手动拼接百分号。
请注意,在实际运行之前,你需要检查表`ebanklink.EB_BACKUPSQL`是否兼容MySQL 5.6的语法,并且确认数据库连接的字符集设置与上述示例匹配。
阅读全文