jia_xue
jia_xue
采纳率4.2%
2017-09-13 13:11 阅读 5.8k

mysql declare 语法问题

declare myparam int default 100;
报错ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'declare @i int' at line 1
那位大神帮忙解答一下

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • qq_33727653 砸死接触 2017-09-15 02:26

    这是一个自定义函数的例子 ,希望对有帮助,我这里暂没找到自己写的存储过程例子,楼主可以百度下,应该挺多的。

     DELIMITER $$ 
     DROP FUNCTION IF EXISTS `func_split_string_to_other`$$   
    CREATE FUNCTION `func_split_string_to_other`(v_str varchar(100),v_desc varchar(100)) RETURNS varchar(100) CHARSET utf8    
    BEGIN    
    
              DECLARE i int(4);   
              DECLARE id1 INT DEFAULT 0;
              DECLARE temp varchar(100);
              DECLARE returnStr varchar(100);     
              set i = 1;    
              if(v_str is null or LENGTH(v_str)=0) then    
                   return 'error';    
              else    
              while i<= 1+(LENGTH(v_str) - LENGTH(replace(v_str,v_desc,'')))   
              do    
                SELECT id INTO id1 FROM tb_dep WHERE name=REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_str, v_desc, i)), v_desc, 1));
                IF(returnStr IS NULL) THEN
                   set returnStr=id1;
                ELSE 
                   SET temp=returnStr;
                   set returnStr= CONCAT(temp,v_desc,id1);
                END IF;
              set i = i+1;    
              end while;     
              return returnStr;    
              end if;    
     END$$  
    DELIMITER ; 
    
    点赞 1 评论 复制链接分享
  • qq_33727653 砸死接触 2017-09-14 00:55

    哥,我没接您的意思。。。。语法错误在'declare @i int附近,您贴了declare myparam int default 100这个干瘪的一小块,好像看不出来啊!能把语句贴多点吗?

    点赞 评论 复制链接分享

相关推荐