存储函数

创建存储函数,需要使用CREATE FUNCTION语句,基本语法如下:

CREATE FUNCTION func_name([func_parameter])
RETURNS TYPE
[characteristics...] routine_body

CREATE FUNCTION为用来创建存储函数的关键字;func_name表示存储函数的名称

func_parameter为存储函数的参数列表,参数列表如下

其中,IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以输出;

param_name表示参数名称;type表示参数类型,该类型可以是MYSQL数据库中的任意类型

RETURNS TYPE语句表示函数返回数据的类型;characteristics:指定存储函数的特性,取值与创建存储过程时相同

创建存储函数,名称为NameByT,该函数返回SELECT语句的查询结果,数值类型为字符串型

CREATE FUNCTION SelectByT()
RETURNS VARCHAR(255);
RETURN (SELECT NAME FROM T3 WHERE ID=3);

注意:RETURNS CHAR(50)数据类型的时候,RETURNS 是有S的,而RETURN (SELECT NAME FROM t3 WHERE id=2)的时候RETURN是没有S的

所以有时候大家可能觉得MYSQL很烦,谁不知是自己写错了

这里有一个方法,就是利用SQLYOG的代码格式化功能,选中要格式化的代码,然后按F12,如果能格式化,证明你的代码没有问题,如果不能格式化

证明你写的代码有问题!!!

调用函数

变量的使用

变量可以在子程序中声明并使用,这些变量的作用范围是在BEGIN...END程序中

1、定义变量

在存储过程中定义变量

DECLARE var_name[,varname]...date_type[DEFAULT VALUE];

var_name为局部变量的名称。DEFAULT VALUE子句给变量提供一个默认值。值除了可以被声明为一个常数外,还可以被指定为一个表达式。

如果没有DEFAULT子句,初始值为NULL

DECLARE MYPARAM INT DEFAULT 100;

2、为变量赋值

定义变量之后,为变量赋值可以改变变量的默认值,MYSQL中使用SET语句为变量赋值

SET var_name=expr[,var_name=expr]...

在存储过程中的SET语句是一般SET语句的扩展版本。

被SET的变量可能是子程序内的变量,或者是全局服务器变量,如系统变量或者用户变量

他运行SET a=x,b=y,....

声明3个变量,分别为var1,var2和var3

DECLARE par1,par2,par3 INT;
SET par1=10,par2=10;
SET par3=par1+par2;

MYSQL中还可以通过SELECT...INTO为一个或多个变量赋值

DECLARE NAME CHAR(50);
DECLARE ID DECIMAL(8,2);
SELECT NAME, ID INTO NAME ,ID FROM T3;

最新文章

  1. StringUtils工具类
  2. 第21章 java线程(1)-线程初步
  3. iOS---初识Swift(一)
  4. SQL Server 的数据表简单操作
  5. Ubuntu学习总结-04 搭建JAVA开发环境
  6. Shell 编程基础之变量和环境变量
  7. 使用javax.persistence注解配置PO对象
  8. Jenkins Git 中文乱码问题解决
  9. QT5中文显示
  10. MySQLdb模块安装-win环境
  11. Ubuntu jdk报Picked up JAVA_TOOL_OPTIONS信息解决
  12. codechef Prime Distance On Tree(树分治+FFT)
  13. myBatis动态语句详解
  14. JavaScript表单
  15. Python的__getattr__和__getattribute__
  16. Eclipse里JAR文件的打包和使用
  17. react组件实现扩展知识
  18. javascript常用工具类整理(copy)
  19. range和xrange
  20. jQuery Mobile Api

热门文章

  1. CSS之position
  2. JavaScript正则表达式(三)
  3. 怎么修改tabbar的默认选中界面
  4. Hibernate 代码生成器
  5. iOS 调出storyboard里面起始Controller的箭头
  6. Linux console on LCD
  7. Linux makefile 教程 非常详细,且易懂 (转)
  8. jQuery中的bind() live() delegate()之间区别分析
  9. C# 3.0 LINQ的准备工作
  10. 实践JAVA wait(), notify(),sleep方法--一道多线程的面试题