精华内容
下载资源
问答
  • MySQL存储过程写法可以使用 CREATE PROCEDURE 语句创建存储过程。数据库存储过程语法格式如下:CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体...

    都说不懂数据库的程序员不是合格的程序员,那么你知道MySQL存储过程应该怎么写吗?

    ec8655b5e3751aa6cbc990e98935641e.png

    MySQL存储过程写法

    可以使用 CREATE PROCEDURE 语句创建存储过程。

    数据库存储过程语法格式如下:

    CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体

    DELIMITER //

    CREATE PROCEDURE myproc(OUT s int)

    BEGIN

    SELECT COUNT(*) INTO s FROM students;

    END

    //

    DELIMITER ;

    例:创建一个简单的存储过程

    -- ----------------------------

    -- Procedure structure for `proc_adder`

    -- ----------------------------DROP PROCEDURE IF EXISTS `proc_adder`;

    DELIMITER ;;CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_adder`(IN a int, IN b int, OUT sum int)BEGIN

    #Routine body goes here...

    DECLARE c int;

    if a is null then set a = 0;

    end if;

    if b is null then set b = 0;

    end if;set sum = a + b;END

    ;;

    DELIMITER ;

    MySQL的优点

    1. 它使用的核心线程是完全多线程,支持多处理器。

    2. 有多种列类型:1、2、3、4、和8字节长度自有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM类型。

    3. 它通过一个高度优化的类库实现SQL函数库并像他们能达到的一样快速,通常在查询初始化后不该有任何内存分配。没有内存漏洞。

    4. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查询中混来自不同数据库的表。

    5. 支持ANSI SQL的LEFT 0UTER JOIN和ODBC。

    6. 所有列都有缺省值。你可以用INSERT插入一个表列的子集,那些没用明确给定值的列设置为他们的决省值。

    7. MySQL可以工作在不同的平台上。支持C、C++、Java、Perl、PHP、Python和TCL API。

    展开全文
  • mysql 存储过程写法

    千次阅读 2013-10-17 14:04:13
    mysql存储过程的创建,删除,调用及其他常用命令 mysql 5.0存储过程学习总结 一.创建存储过程 1.基本语法:   create procedure sp_name() begin ……… end 2.参数传递 二.调用存储过程 1....

    mysql存储过程的创建,删除,调用及其他常用命令

    mysql 5.0存储过程学习总结

    一.创建存储过程

    1.基本语法:

     

    create procedure sp_name()
    begin
    ………
    end

    2.参数传递

    二.调用存储过程

    1.基本语法:call sp_name()
    注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递

    三.删除存储过程

    1.基本语法:
    drop procedure sp_name//
    2.注意事项
    (1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程

    四.区块,条件,循环

    1.区块定义,常用
    begin
    ……
    end;
    也可以给区块起别名,如:
    lable:begin
    ………..
    end lable;
    可以用leave lable;跳出区块,执行区块以后的代码
    2.条件语句

     

    if 条件 then
    statement
    else
    statement
    end if;

    3.循环语句
    (1).while循环

    [label:] WHILE expression DO

    statements

    END WHILE [label] ;

     

    (2).loop循环

     

    [label:] LOOP

    statements

    END LOOP [label];

     

    (3).repeat until循环

     

    [label:] REPEAT

    statements

    UNTIL expression

    END REPEAT [label] ;

     

    五.其他常用命令

    1.show procedure status
    显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
    2.show create procedure sp_name
    显示某一个存储过程的详细信息

     

     

    mysql存储过程中要用到的运算符

    mysql存储过程学习总结-操作符

    算术运算符

    +     加   SET var1=2+2;       4
    -     减   SET var2=3-2;       1
    *     乘   SET var3=3*2;       6
    /     除   SET var4=10/3;      3.3333
    DIV   整除 SET var5=10 DIV 3;  3
    %     取模 SET var6=10%3 ;     1

    比较运算符

    >            大于 1>2 False
    <            小于 2<1 False
    <=           小于等于 2<=2 True
    >=           大于等于 3>=2 True
    BETWEEN      在两值之间 5 BETWEEN 1 AND 10 True
    NOT BETWEEN  不在两值之间 5 NOT BETWEEN 1 AND 10 False
    IN           在集合中 5 IN (1,2,3,4) False
    NOT IN       不在集合中 5 NOT IN (1,2,3,4) True
    =            等于 2=3 False
    <>, !=       不等于 2<>3 False
    <=>          严格比较两个NULL值是否相等 NULL<=>NULL True
    LIKE         简单模式匹配 "Guy Harrison" LIKE "Guy%" True
    REGEXP       正则式匹配 "Guy Harrison" REGEXP "[Gg]reg" False
    IS NULL      为空 0 IS NULL False
    IS NOT NULL  不为空 0 IS NOT NULL True

    逻辑运算符

    (AND)





     

     

     

    AND

    TRUE

    FALSE

    NULL

    TRUE

    TRUE

    FALSE

    NULL

    FALSE

    FALSE

    FALSE

    NULL

    NULL

    NULL

    NULL

    NULL

     

    或(OR)

     

     

     

    OR

    TRUE

    FALSE

    NULL

    TRUE

    TRUE

    TRUE

    TRUE

    FALSE

    TRUE

    FALSE

    NULL

    NULL

    TRUE

    NULL

    NULL

     

    异或(XOR)

     

     

     

    XOR

    TRUE

    FALSE

    NULL

    TRUE

    FALSE

    TRUE

    NULL

    FALSE

    TRUE

    FALSE

    NULL

    NULL

    NULL

    NULL

    NULL

     

    位运算符

    |   位或
    &   位与
    <<  左移位
    >>  右移位
    ~   位非(单目运算,按位取反)

     

    mysq存储过程中常用的函数,字符串类型操作,数学类,日期时间类。

    mysql存储过程基本函数

    一.字符串类 

    CHARSET(str) //返回字串字符集
    CONCAT (string2  [,... ]) //连接字串
    INSTR (string ,substring ) //返回substring首次在string中出现的位置,不存在返回0
    LCASE (string2 ) //转换成小写
    LEFT (string2 ,length ) //从string2中的左边起取length个字符
    LENGTH (string ) //string长度
    LOAD_FILE (file_name ) //从文件读取内容
    LOCATE (substring , string  [,start_position ] ) 同INSTR,但可指定开始位置
    LPAD (string2 ,length ,pad ) //重复用pad加在string开头,直到字串长度为length
    LTRIM (string2 ) //去除前端空格
    REPEAT (string2 ,count ) //重复count次
    REPLACE (str ,search_str ,replace_str ) //在str中用replace_str替换search_str
    RPAD (string2 ,length ,pad) //在str后用pad补充,直到长度为length
    RTRIM (string2 ) //去除后端空格
    STRCMP (string1 ,string2 ) //逐字符比较两字串大小,
    SUBSTRING (str , position  [,length ]) //从str的position开始,取length个字符,
    注:mysql中处理字符串时,默认第一个字符下标为1,即参数position必须大于等于1

     

    mysql> select substring(’abcd’,0,2);
    +———————–+
    | substring(’abcd’,0,2) |
    +———————–+
    |                       |
    +———————–+
    1 row in set (0.00 sec)

     

    mysql> select substring(’abcd’,1,2);
    +———————–+
    | substring(’abcd’,1,2) |
    +———————–+
    | ab                    |
    +———————–+
    1 row in set (0.02 sec)

    TRIM([[BOTH|LEADING|TRAILING] [padding] FROM]string2) //去除指定位置的指定字符
    UCASE (string2 ) //转换成大写
    RIGHT(string2,length) //取string2最后length个字符
    SPACE(count) //生成count个空格 

    二.数学类

    ABS (number2 ) //绝对值
    BIN (decimal_number ) //十进制转二进制
    CEILING (number2 ) //向上取整
    CONV(number2,from_base,to_base) //进制转换
    FLOOR (number2 ) //向下取整
    FORMAT (number,decimal_places ) //保留小数位数
    HEX (DecimalNumber ) //转十六进制
    注:HEX()中可传入字符串,则返回其ASC-11码,如HEX(’DEF’)返回4142143
    也可以传入十进制整数,返回其十六进制编码,如HEX(25)返回19
    LEAST (number , number2  [,..]) //求最小值
    MOD (numerator ,denominator ) //求余
    POWER (number ,power ) //求指数
    RAND([seed]) //随机数
    ROUND (number  [,decimals ]) //四舍五入,decimals为小数位数]

     

    注:返回类型并非均为整数,如:
    (1)默认变为整形值
    mysql> select round(1.23);
    +————-+
    | round(1.23) |
    +————-+
    |           1 |
    +————-+
    1 row in set (0.00 sec)

     

    mysql> select round(1.56);
    +————-+
    | round(1.56) |
    +————-+
    |           2 |
    +————-+
    1 row in set (0.00 sec)

    (2)可以设定小数位数,返回浮点型数据
    mysql> select round(1.567,2);
    +—————-+
    | round(1.567,2) |
    +—————-+
    |           1.57 |
    +—————-+
    1 row in set (0.00 sec)

    SIGN (number2 ) //返回符号,正负或0
    SQRT(number2) //开平方

     
    三.日期时间类
     

    ADDTIME (date2 ,time_interval ) //将time_interval加到date2
    CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //转换时区
    CURRENT_DATE (  ) //当前日期
    CURRENT_TIME (  ) //当前时间
    CURRENT_TIMESTAMP (  ) //当前时间戳
    DATE (datetime ) //返回datetime的日期部分
    DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或时间
    DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式显示datetime
    DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上减去一个时间
    DATEDIFF (date1 ,date2 ) //两个日期差
    DAY (date ) //返回日期的天
    DAYNAME (date ) //英文星期
    DAYOFWEEK (date ) //星期(1-7) ,1为星期天
    DAYOFYEAR (date ) //一年中的第几天
    EXTRACT (interval_name  FROM date ) //从date中提取日期的指定部分
    MAKEDATE (year ,day ) //给出年及年中的第几天,生成日期串
    MAKETIME (hour ,minute ,second ) //生成时间串
    MONTHNAME (date ) //英文月份名
    NOW (  ) //当前时间
    SEC_TO_TIME (seconds ) //秒数转成时间
    STR_TO_DATE (string ,format ) //字串转成时间,以format格式显示
    TIMEDIFF (datetime1 ,datetime2 ) //两个时间差
    TIME_TO_SEC (time ) //时间转秒数]
    WEEK (date_time [,start_of_week ]) //第几周
    YEAR (datetime ) //年份
    DAYOFMONTH(datetime) //月的第几天
    HOUR(datetime) //小时
    LAST_DAY(date) //date的月的最后日期
    MICROSECOND(datetime) //微秒
    MONTH(datetime) //月
    MINUTE(datetime) //分

     

    附:可用在INTERVAL中的类型
    DAY ,DAY_HOUR ,DAY_MINUTE ,DAY_SECOND ,HOUR ,HOUR_MINUTE ,HOUR_SECOND ,MINUTE ,MINUTE
    展开全文
  • 存储过程写法是什么存储过程的写作是什么,存储过程的编写如下:1 .用代码[创建进程名]创建一个存储过程;2.用[EXECSP _ NAME]代码调用存储过程。操作环境:Windows7系统,微软visual c 2015版本,戴尔G3电脑。存储...

    存储过程写法是什么存储过程的写作是什么,存储过程的编写如下:1 .用代码[创建进程名]创建一个存储过程;2.用[EXECSP _ NAME]代码调用存储过程。

    a3e182f0a19509d1fdf2fc580c617dbf.png

    操作环境:Windows7系统,微软visual c 2015版本,戴尔G3电脑。

    存储过程写法是:

    1、创建存储过程

    创建过程sp_name

    @[参数名][类型],@[参数名][类型]

    作为

    开始

    ..

    结束

    以上格式也可以缩写为:

    创建进程sp_name

    @[参数名][类型],@[参数名][类型]

    作为

    开始

    ..

    结束

    /*注意:“sp_name”是要创建的存储过程的名称,不能以阿拉伯数字开头*/2、调用存储过程

    存储过程可以在三种环境中调用:

    在命令命令下,基本语法是exec sp _ name参数名];

    在SQL环境中,基本语法是:调用sp _ name参数名];

    在PL/SQL环境下,基本语法是:begin sp _ name参数名]end;

    3、删除存储过程

    1.基本语法:

    删除过程sp_name2。预防

    (1)不能在一个存储过程中删除另一个存储过程,但只能调用另一个存储过程

    4、其他常用命令

    1 .显示程序状态

    显示数据库中所有存储过程的基本信息,包括数据库、存储过程名称、创建时间等。

    2 .显示创建过程sp_name

    显示mysql存储过程的详细信息

    3.exec sp_helptext sp_name

    显示由sp_name对象创建的文本。以上是存储过程写什么的详细内容。请多关注其他关于Lei.com PHP知识的相关文章!

    展开全文
  • MySql存储过程写法

    2010-09-28 16:22:58
    #mysql存储过程的单行注释用“#”,如果使用“--”则必须在后面使用至少一个空格,否则存储过程编译不通过 create procedure addWebGameAdmin(in gameId int) begin declare gameTitle varchar(100) character ...

    语法细节不多说,网上有很多文章,而且概念很多。直接上一段代码:

    #mysql存储过程的单行注释用“#”,如果使用“--”则必须在后面使用至少一个空格,否则存储过程编译不通过
    create procedure addWebGameAdmin(in gameId int)
    begin
    	declare gameTitle varchar(100) character set utf8; -- 存储过程变量的字符集声明,否则中文出现乱码
    	declare adminId varchar(50);  -- 管理员id
    	declare adminAmount varchar(100); -- 管理员账号:游戏名称+admin
    	declare adminPwd varchar(50); -- 管理员密码:md5(账号+密码)
    	declare roleId varchar(50); -- 权限id
    	
    	declare curVar varchar(50) default ''; -- 当前游标指向的结果
    	declare stop int default 0;-- 处理游标到达最后一行的情况
    	declare resultSet cursor for select node_id from gaga_lianyun_manage_node; -- 创建游标
    	declare continue handler for sqlstate '02000' set stop=1; -- 声明游标的异常处理,设置一个终止标记
    	
    	select title into gameTitle from php_ecms_webgame where id=gameId;
    	if gameTitle is not null then
    		set adminId=replace(uuid(),'-','');  -- (这里使用了replace函数和uuid函数,)管理员id
    		
    		set adminAmount=concat(gameTitle,'admin');   -- (字符串连接函数concat)管理员账号
    		set adminPwd=md5(concat(adminAmount,'123')); -- 管理员密码
    		insert into gaga_lianyun_admin (admin_id,amount,pwd,game_id) values (adminId,adminAmount,adminPwd,gameId); -- 插入记录
    		open resultSet;
    			
    			fetch resultSet into curVar;
    			-- 判断游标是否已经到达最后
    			while stop <> 1 do
    				select replace(uuid(),'-','') into roleId;   -- 权限id
    				insert into gaga_lianyun_manage_node (role_id,admin_id,manage_node_id) values (roleId,adminId,curVar);
    				fetch resultSet into curVar; -- 读取下一行数据
    			end while;
    		close resultSet;
    		commit;
    	end if;
    	
    end;

     

    展开全文
  • mysql存储过程写法

    2011-06-22 10:18:18
    drop procedure if exists sp_statis_subject_mouth; CREATE PROCEDURE sp_statis_subject_mouth(IN month int) begin /**科目id**/ DECLARE _uid decimal(19,0); /**借总额**/ ... DECLARE ...
  • 存储过程简介SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。...
  • 存储过程:我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带...
  • 存储过程简单来说,就是为以后的使用而保存的一条或多条MYSQL语句的集合。可将其视为批文件,虽然它们的作用不仅限于批处理。一、为什么要使用存储过程通过把处理封装在容易使用的单元中,简化复杂的操作由于不要求...
  • MySQL存储过程写法总结

    万次阅读 2017-08-06 21:48:53
    1、创建无参存储过程。 create procedure product() begin  select * from user; end; 一条简单的存储过程创建语句,此时调用的语句为: call procedure(); ##注意,如果是在命令行下编写的话,这样的写法会出现...
  • 注意事项 1 mysql5.0.13之后支持在存储过程中调用prepare 2 prepare stmt from 'select * from ?'; (错) mysql5.0.24,prepare尚不支持 表名做变量! 解决方案:用 contat()函数,组合字符串 3 execute stmt [using...
  • 注意事项 1 mysql5.0.13之后支持在存储过程中调用prepare 2 prepare stmt from 'select * from ?'; (错) mysql5.0.24,prepare尚不支持 表名做变量! 解决方案:用 contat()函数,组合字符串 3 execute stmt [using...
  • 注意事项 1 mysql5.0.13之后支持在存储过程中调用prepare 2 prepare stmt from 'select * from ?'; (错) mysql5.0.24,prepare尚不支持 表名做变量! 解决方案:用 contat()函数,组合字符串 3 execute stmt [using...
  • mysql 存储过程写法以及函数说明

    千次阅读 2018-11-06 16:07:41
    (1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 四.其他常用命令 1.show procedure status 显示 数据库 中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等 2...
  • mysql 存储过程写法(转)

    千次阅读 2010-08-29 13:26:00
    mysql 5.0存储过程学习总结 一.创建存储过程1.基本语法: create procedure sp_name() begin ……… end 2.参数传递 二.调用存储过程1.基本语法:call sp_name() 注意:...
  • BEGINDECLARE sTemp TEXT ;/*父id*/DECLARE recomsTempChd TEXT ;/*子id*/DECLARE v_memberno INT DEFAULT 0 ;DECLARE v_arraymemberno INT DEFAULT 0 ;DECLARE v_recommemberno INT DEFAULT 0 ;...
  • BEGIN DECLARE sTemp TEXT ; /*父id*/ DECLARE recomsTempChd TEXT ; /*子id*/ DECLARE v_memberno INT DEFAULT 0 ; DECLARE v_arraymemberno INT D...
  •  1 mysql5.0.13之后支持在存储过程中调用prepare  2 prepare stmt from 'select * from ?'; (错)  mysql5.0.24,prepare尚不支持 表名做变量!  解决方案:用 contat()函数,组合字符串  3 execute ...
  • 位运算符 | 或 & 与 左移位 >> 右移位 ~ 非(单目运算,按位取反) 注释: mysql存储过程可使用两种风格的注释 双横杠:-- 该风格一般用于单行注释 c风格:/* 注释内容 */ 一般用于多行注释 --------------------...
  • mysql存储过程的具体写法发布时间:...感兴趣的话就一起来看看正文部分吧,相信看完mysql存储过程的具体写法你一定会有所收获的。可以使用 CREATE PROCEDURE 语句创建存储过程。数据库存储过程语法格式如下:CREA...
  • 可以使用 CREATE PROCEDURE 语句创建存储过程。数据库存储过程语法格式如下:CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体DELIMITER // ...
  • 可以使用 CREATE PROCEDURE 语句创建存储过程。数据库存储过程语法格式如下:CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体DELIMITER //CREATE...
  • 近期做个东西,写了一个MySQL存储过程,其中涉及Cursor的使用,如下:CREATE PROCEDURE `justifyGroupNum`()NOT DETERMINISTICSQL SECURITY DEFINERCOMMENT ''BEGIN/*how to run:call justifyGroupNum()*/DECLARE...
  • 可以使用 CREATE PROCEDURE 语句创建存储过程。数据库存储过程语法格式如下:CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体DELIMITER //CREATE...
  • 可以使用 CREATE PROCEDURE 语句创建存储过程。数据库存储过程语法格式如下:CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体DELIMITER //CREATE...
  • 可以使用 CREATE PROCEDURE 语句创建存储过程。数据库存储过程语法格式如下:CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体DELIMITER //CREATE...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 314
精华内容 125
关键字:

mysql存储过程写法

mysql 订阅