不愿意做出改变 ≈ 坐吃等死!!

PostgreSQL生成数据库不存在的手机号码

上一篇 / 下一篇  2017-06-27 14:41:10 / 个人分类:数据库


背景:
公司同事问我,她想通过JMeter生成未注册的手机号码

思路:
1. JM执行sql生成手机号码;(她说用的是PG数据库)
2. 用JM自带bean shell编写脚本生成;

历程:
一步一步来分析,想要生成手机号码,得熟悉pgsql的一些自带函数,有想过用random(),可以达到目的,但是略微麻烦,先不用它。不如就先定义一个变量phone,给它赋值,再写一个循环,判断是否在数据库里,如果在库里则phone+1,如果不存在库里,则返回,思路比较清晰,那么开始写。

实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
-- 创建存储过程
CREATE OR REPLACE FUNCTION randomPhoneNo() RETURNS BIGINT AS $$
DECLARE
-- 这里是给变量phone赋的初始值,随意填写均可,尽量是合法的手机号码
phone BIGINT= 18888881904;
-- 中间变量phoneList
phoneList user_info%ROWTYPE;
BEGIN
-- 使用while循环,格式是 while 【条件】 LOOP ,结束后需要加上end LOOP
    WHILE TRUE LOOP
-- select into 这段sql是为了配合 if not found 使用,即判断查询条件是否符合
-- 如果不符合(手机号码不存在,达到目的)则执行if条件内的语句,返回此手机号码
-- 否则(手机号码存在,需要更换手机号码)phone自增+1
    SELECT
        INTO phoneList *
    FROM
        user_info
    WHERE
        bind_mobile = cast(phone as VARCHAR) ;
    IF NOT FOUND THEN
        RETURN phone;     
    ELSE
        phone := phone + 1;
    end IF;
    END LOOP;
end;
$$ LANGUAGE plpgsql;
 
-- 创建了之后 执行函数
select randomPhoneNo()
 
-- 删掉存储过程
DROP FUNCTION randomPhoneNo()

TAG: 数据库 手机号码 PG生成手机号码 PG存储过程

 

评分:0

我来说两句

Open Toolbar