开发者社区> 问答> 正文

DMS无法成功执行下列sql


/*DMS无法成功执行下列sql,但在Navicat for MySQL是可以执行成功的,我mysql版本为5.6。不知是什么原因*/
/*这段sql是添加索引时使用*/


drop procedure if exists dlt_idx;
create procedure dlt_idx(in p_tblName varchar(128), in p_idxName varchar(128))
begin
   declare str varchar(256);
   declare cnt int;
   declare currnet_schema varchar(64);
   if p_idxName='PRIMARY' then
       set @str = concat('alter table ', p_tblName, ' drop primary key;');
   else
       set @str = concat('drop index ', p_idxName, ' on ', p_tblName, ';');
   end if;
   select schema() into @current_schema;
   select count(*) into @cnt from information_schema.statistics
   where table_name=p_tblName and index_name=p_idxName;
   if @cnt>0 then
       prepare stmt from @str;
       execute stmt;
   end if;
end;


/*************************************************/

/*事实上DMS边下面代码都无法执行!!!*/

create procedure dlt_idx(in p_tblName varchar(128), in p_idxName varchar(128)) begin
   declare str varchar(256);    declare cnt int;
end;







展开
收起
microtown 2016-08-30 11:56:06 3940 0
2 条回答
写回答
取消 提交回答
  • 如1楼回复已是您要的答案,普通的SQL分隔符是分号,delimiter设置分隔符即可。

    另外,如果您是要操作存储过程,建议在左侧对象树->可编程对象下面进行操作,这里面会针对存储过程、函数做一些特殊处理,包括编译、执行、错误行定位、中间结果返回、OUT参数等,以后我们也会考虑融入debug功能,目前这块还在技术探索阶段。
    2016-09-18 11:27:28
    赞同 展开评论 打赏
  • ReDMS无法成功执行下列sql
    你在create procedure 前加上  delimiter $,结束加上$,就可以了        
    2016-09-06 11:18:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
MaxCompute SQL 2.0 全新的计算引擎 立即下载
基于Spark的统一数据管理与数据探索平台 立即下载
INFINIDATA:基于Spark的统一数据管理与探索平台 立即下载