mysql存储过程语法学习笔记

SEO探索者团队 SEO服务&网站优化

mysql存储过程是各种数据库内置的一个功能,它可以提高数据库各种性能,下面我来给大家分享一下我学习存储过程的些知识,大家有兴趣一起来看看.

今天又把mysql存储过程学习了下,大家先看以下代码,对语法不懂的朋友,可以详细看下语法结构,代码如下:

  1. CREATEPROCEDUREandCREATEFUNCTIONSyntax
  2. CREATE
  3. [DEFINER={user|CURRENT_USER}]
  4. PROCEDUREsp_name([proc_parameter[,...]])
  5. [characteristic...]routine_body
  6. CREATE
  7. [DEFINER={user|CURRENT_USER}]
  8. FUNCTIONsp_name([func_parameter[,...]])
  9. RETURNStype
  10. [characteristic...]routine_body
  11. proc_parameter:
  12. [IN|OUT|INOUT]param_nametype
  13. func_parameter:
  14. param_nametype
  15. type:
  16. AnyvalidMySQLdatatype
  17. characteristic:
  18. COMMENT'string'
  19. |LANGUAGESQL
  20. |[NOT]DETERMINISTIC
  21. |{CONTAINSSQL|NOSQL|READSSQLDATA|MODIFIESSQLDATA}
  22. |SQLSECURITY{DEFINER|INVOKER}
  23. routine_body:--phpfensi.com
  24. ValidSQLroutinestatement

例,代码如下:

  1. DELIMITER$$/*改变语句的结束符*/
  2. USE`test`$$/*选择数据库*/
  3. DROPPROCEDUREIFEXISTS`outgo`$$/*存在outgo存储过程就删除*/
  4. CREATEDEFINER=`root`@`%`PROCEDURE`outgo`(INv_tableCHAR(10),INv_idINT(2),OUTv_valueVARCHAR(32))

调用存储过程的语法是call.如下:

  1. mysql>calloutgo('user',2,@a);
  2. +----+--------------+
  3. |id|title|
  4. +----+--------------+
  5. |2|你大爷的|
  6. +----+--------------+
  7. 1rowinset(0.00sec)
  8. QueryOK,0rowsaffected(0.00sec)
  9. mysql>calloutgo('user',1,@a);
  10. +----+--------------------+
  11. |id|title|
  12. +----+--------------------+
  13. |1|我来测试一记|
  14. +----+--------------------+
  15. 1rowinset(0.00sec)

其中调用中文的时候可能会出现Illegal mix of collations (latin1_swedish_ci,IMPLICIT), (latin1_swedish_ci,NUMERIC), (utf8_general_ci,COERCIBLE) for operation 'concat'这是由于编码不一致导致的。

相关广告
  • mysql存储过程语法学习笔记 mysql存储过程语法学习笔记 mysql存储过程语法学习笔记
相关阅读

mysql存储过程语法学习笔记

2019/10/10 17:36:12 | 谷歌SEO算法 | SEO知识