create PROCEDURE PRO_TradeToOrder
(
p_channel_code varchar(10), 
p_date varchar(10) 
)
BEGIN
declare tid varchar(50);
DECLARE mycur CURSOR  for 
SELECT tid FROM top_trades WHERE is_transform = 0 AND status = 'WAIT_SELLER_SEND_GOODS' AND channel_code = p_channel_code and DATE_FORMAT(created,'%Y-%m-%d') = p_date;
OPEN  mycur;
-- REPEAT
fetch mycur into  tid;
 select CONCAT('当前的订单编号为',tid);-- end REPEAT;
CLOSE mycur; 
END
执行后为什么影响行数为0
传入的参数执行sql是有数据的还有怎么不能用alter来修改存储过程?
每次都要删除再重新创建 太麻烦了

解决方案 »

  1.   

    你这存储过程完全没必要用游标啊
    直接
    SELECT CONCAT('当前的订单编号为',tid); FROM top_trades WHERE is_transform = 0 AND status = 'WAIT_SELLER_SEND_GOODS' AND channel_code = p_channel_code and DATE_FORMAT(created,'%Y-%m-%d') = p_date;
      

  2.   

    这只是个示例 
    我还有别的逻辑没有写
    我想知道为什么直接执行sql有数据
    执行存储过程就没有数据呢?
      

  3.   

    贴建表及插入记录的SQL,怎样调用SP的