2 jia xue jia_xue 于 2017.09.13 21:11 提问

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
qq_33727653   2017.09.14 08:55

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

jia_xue
jia_xue 实在不好意思,我也是刚学,不懂,你能附一个完整的例子让我试试吗
2 个月之前 回复
qq_33727653
qq_33727653   2017.09.15 10: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 ; 
Csdn user default icon
上传中...
上传图片
插入图片