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

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

jia_xue
jia_xue 实在不好意思,我也是刚学,不懂,你能附一个完整的例子让我试试吗
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MySQL declare语句用法介绍
MySQL declare语句是我们经常用到的语句,下文就为您举例说明了MySQL declare语句的用法,希望对您学习MySQL declare语句的使用能有所帮助。 MySQL declare语句是在复合语句中声明变量的指令。 (1)Example with two DECLARE statements  两个DECLARE语句的实例 CREATE PROCEDURE p8 
mysql或则oracle的declare可以放在操作语句的后面吗?
答案是肯定不能的 DECLARE必须在一开始定义部分。不管是那种数据库,在mysal中定义后的变量在再次引用时不能再用@了,没有声明的还是要加@,而oracle中一个变量一定要声明的,而且必须要放在开始。 
mysql中declare语句用法
mysql中的DECLARE语句是在复合语句中声明变量的指令。  (1)Example with two DECLARE statements  两个DECLARE语句的实例  CREATE PROCEDURE p8 ()  BEGIN  DECLARE a INT;  DECLARE b INT;  SET a = 5;  SET b = 5;  INSERT INTO t V
mysql变量定义(declare,set,@)使用实例讲解
mysql变量的种类 用户变量:以”@”开始,形式为”@变量名”。用户变量跟mysql客户端是绑定的,设置的变量,只对当前用户使用的客户端生效 全局变量:定义时,以如下两种形式出现,set GLOBAL 变量名&amp;nbsp; 或者&amp;nbsp; set @@global.变量名,对所有客户端生效。只有具有super权限才可以设置全局变量 会话变量:只对连接的客户端有效。 ...
MySQL数据库定义存储过程总是报语法错误的解决方法
存储过程是数据库的重要工具,它的作用相当于高级编程语言中的函数,一旦定义好了,在后续操作中就可以直接调用,无需再进行编译。定义存储过程的方法有很多,不同的数据库语法也各不相同,这里不再赘述。我要说的是一种语法错误的解决方法。假设现在有一个课程数据库,数据库课程表内容如下:现在我想编写一个存储过程,输入是课程编号,输出是课程名称。编写的代码如下:create procedure course_id_...
declare 声明变量类型
[root@www ~]# declare [-aixr] variable 选项不参数: -a  :将后面名为 variable 的变量定义成为数组 (array) 类型 -i  :将后面名为 variable 的变量定义成为整数数字 (integer) 类型 -x  :用法不 export 一样,就是将后面的 variable 变成环境发量; -r  :将发量设定成为 readonl
【MySQL 8.0 手册: SQL语句语法:数据定义语句】CREATE EVENT 语法
13.1.12 创建事件语法 (CREATE EVENT Syntax) ALTER [DEFINER = { user | CURRENT_USER }] EVENT event_name [ON SCHEDULE schedule] [ON COMPLETION [NOT] PRESERVE] [RENAME TO new_event_name] ...
mysql存储过程中 declare 和 set 定义变量的区别
mysql存储过程中,定义变量有两种方式: 1.使用set或select直接赋值,变量名以 @ 开头. 例如:set @var=1; 可以在一个会话的任何地方声明,作用域是整个会话,称为会话变量。 2.以 DECLARE 关键字声明的变量,只能在存储过程中使用,称为存储过程变量,例如: DECLARE var1  INT DEFAULT 0;   主要用在存储过程中,或者是给存
MySql存储过程之变量declare set
1、变量的定义 在MySQL里面可以像我们写代码中一样定义变量来保持中间结果,看下面的格式: [sql] view plain copy DECLARE variable_name datatype(size) DEFAULT default_value;    DECLARE相当于关键字,有点类似var,表示定义一个变量;然
DECLARE CURSOR FOR的使用
使用目的,利用以时间等条件参照其他表格,将会议目录抽取出来(游标的执行结果),然后以添加其他的文字形式对 结果进行修饰,由于最终目的是将会议目录以邮件的形势发布出去,所以单一的数据行查询的话,无法满足我想要得 集合结果(根据数据库设计方式不同),所以利用触发器来接受由外部发来的参数,然后利用游标将参数为条件提取数 据集,就是这样。 触发器游标部分的SQL文内容: DECLARE @ROW