使用mysql自定义函数

2017-01-11 15:24:53来源:oschina作者:月光-云海人点击



#### 一、创建数据库表
创建组织表:
``` sql
DROP TABLE IF EXISTS `ms_organization`;
CREATE TABLE `ms_organization` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Id',
`name` varchar(64) NOT NULL COMMENT '名称',
`parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '父组织Id',
`code` int(11) NOT NULL COMMENT '组织编码',
`add_time` datetime NOT NULL COMMENT '添加时间',
`modify_time` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='组织表';
```
#### 二、增加索引和初始化数据
增加唯一索引:
``` sql
ALTER TABLE ms_organization ADD UNIQUE INDEX index_ms_organization_code (code);
```
初始化数据:
``` sql
INSERT INTO ms_organization (name, parent_id, code, add_time)
VALUES
(
"Alphabet",
0,
10011001,
now()
);
```
#### 三、自定义函数
自定义根据组织编号获取组织Id的函数:
``` sql
DROP FUNCTION
IF EXISTS select_org_id_by_code;
delimiter //
CREATE FUNCTION select_org_id_by_code (org_code INT) RETURNS INT (11)
BEGIN
DECLARE
org_id INT (11) ;
SELECT id FROM ms_organization WHERE code = org_code LIMIT 1 INTO org_id ;
RETURN org_id ;
END//
delimiter ;
```
测试函数:
``` sql
select select_org_id_by_code(10011001);
```
#### 四、应用自定义函数
新增子组织:
```
INSERT INTO ms_organization (name, parent_id, code, add_time)
VALUES
(
"Google",
select_org_id_by_code(10011001),
1001100101,
now()
);
```
查询所有组织信息:
```
select * from ms_organization;
```

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台