set @var = '';
set @var2 = 'fff';
set @var = @var2;
-- 这种只能用在declare了的变量
set var = 'sdfdf';
-- 这里不会输出返回结果,只会设置变量
select `day` into @var from redash_queue_flush_sem_base_data limit 1;
-- 这里在设置变量的同时,也会返回
select @day:=`day` from redash_queue_flush_sem_base_data limit 1;
CREATE DEFINER=`dealam_stat_prod`@`%` PROCEDURE `flush_sem_base_data`()
-- 注意这里的BYEBYE,在里面用leave BYEBYE就可以退出了,存储过程里没有return之类的功能
BYEBYE:BEGIN
declare vday varchar(100);
declare vvar VARCHAR(50);
declare vvalue VARCHAR(200);
declare select_done int default 0;
-- 定义select游标
declare cur_queue cursor for select `var`, `value` from redash_variable limit 2;
-- 定义游标是否循环完成的标记变量
declare continue handler for not found set select_done = 1;
if @queue_count > 0 then
insert into redash_logs (`what`) values (concat('刷新队列里还有数据:', @queue_count));
select concat('刷新队列里还有数据:', @queue_count) as msg;
leave BYEBYE;
else
-- 找出待更新订单对应的订单日期,放入待刷新队列中
insert ignore redash_queue_flush_sem_base_data
select distinct(from_unixtime(transaction_time, '%Y-%m-%d')) from da_sem_order where updated_time>@sem_last_update_time order by updated_time;
end if;
open cur_queue;
loop_label:loop
-- 注意这里变量前没有加@
fetch cur_queue into vvar, vvalue;
-- select_done 前没有加@
if select_done = 1 then
leave loop_label;
end if;
-- 注意这里变量前也没有加@,也就是说如果是declare的变量,好像是不用加的
select vvar, vvalue;
set @vvar2 = vvar;
select @vvar2;
insert into redash_logs (`what`) values (concat('刷新了sem base data,日期:', vvar));
end loop;
END
查看未提交的事务
select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.innodb_trx\G;
查看锁信息
select * from information_schema.INNODB_TRX WHERE trx_state=’LOCK WAIT’\G
eval "redis.call('rpush', KEYS[1], ARGV[1])\nredis.call('rpush', KEYS[2], 1)" "queues:default" "queues:default:notify"
返回:
"ERR command eval not support for your account"