mysql存储过程语法学习笔记
2019/10/10/17:36:12 阅读:1873 来源:谷歌SEO算法 标签:
SEO知识
mysql存储过程是各种数据库内置的一个功能,它可以提高数据库各种性能,下面我来给大家分享一下我学习存储过程的些知识,大家有兴趣一起来看看.
今天又把mysql存储过程学习了下,大家先看以下代码,对语法不懂的朋友,可以详细看下语法结构,代码如下:
- CREATEPROCEDUREandCREATEFUNCTIONSyntax
- CREATE
- [DEFINER={user|CURRENT_USER}]
- PROCEDUREsp_name([proc_parameter[,...]])
- [characteristic...]routine_body
- CREATE
- [DEFINER={user|CURRENT_USER}]
- FUNCTIONsp_name([func_parameter[,...]])
- RETURNStype
- [characteristic...]routine_body
- proc_parameter:
- [IN|OUT|INOUT]param_nametype
- func_parameter:
- param_nametype
- type:
- AnyvalidMySQLdatatype
- characteristic:
- COMMENT'string'
- |LANGUAGESQL
- |[NOT]DETERMINISTIC
- |{CONTAINSSQL|NOSQL|READSSQLDATA|MODIFIESSQLDATA}
- |SQLSECURITY{DEFINER|INVOKER}
- routine_body:--phpfensi.com
- ValidSQLroutinestatement
例,代码如下:
- DELIMITER$$/*改变语句的结束符*/
- USE`test`$$/*选择数据库*/
- DROPPROCEDUREIFEXISTS`outgo`$$/*存在outgo存储过程就删除*/
- CREATEDEFINER=`root`@`%`PROCEDURE`outgo`(INv_tableCHAR(10),INv_idINT(2),OUTv_valueVARCHAR(32))
调用存储过程的语法是call.如下:
- mysql>calloutgo('user',2,@a);
- +----+--------------+
- |id|title|
- +----+--------------+
- |2|你大爷的|
- +----+--------------+
- 1rowinset(0.00sec)
- QueryOK,0rowsaffected(0.00sec)
- mysql>calloutgo('user',1,@a);
- +----+--------------------+
- |id|title|
- +----+--------------------+
- |1|我来测试一记|
- +----+--------------------+
- 1rowinset(0.00sec)
其中调用中文的时候可能会出现Illegal mix of collations (latin1_swedish_ci,IMPLICIT), (latin1_swedish_ci,NUMERIC), (utf8_general_ci,COERCIBLE) for operation 'concat'这是由于编码不一致导致的。
热门评论