Oracle在PL/SQL中实现用户注册校验--‘有两种方法’

Oracle实现用户注册校验–两种方法

方法一:

当数据过多的时候会影响到数据库的性能,因为用select * from table,也可以指定需要验证的字段优化也可以 比如只需要验证 username 和 password 就使用 select username,password from table。

代码如图。

Packages代码

CREATE OR REPLACE PACKAGE TEST_LLP_PKG IS

--  P_PHONE 传入参数(IN)
-- P_USERNAME 传入参数(IN)
-- X_RETURN_MSG 传出参数(OUT)
-- VARCHAR2 为数据类型
PROCEDURE TEST_LLP_THREE(P_PHONE      IN VARCHAR2,
                          P_USERNAME   IN VARCHAR2,
                          X_RETURN_MSG OUT VARCHAR2);

END TEST_LLP_PKG;

Package bodies 代码

CREATE OR REPLACE PACKAGE BODY TEST_LLP_PKG IS

-- 加了个 IS
PROCEDURE TEST_LLP_THREE(P_PHONE      IN VARCHAR2,
                             P_USERNAME   IN VARCHAR2,
                             X_RETURN_MSG OUT VARCHAR2) IS
                             
                             
/*使用 for 循环  循环这个表的数据*/
FOR T_TUP IN (SELECT * FROM TEST_USER_PHONE)
        LOOP 
        -- 表数据.字段 与传入的数据进行判断即可
            IF P_PHONE IS NULL AND T_TUP.USERNAME=P_USERNAME THEN 
              X_RETURN_MSG := '用户名已存在';
            END IF;
                IF P_PHONE != T_TUP.PHONE AND P_USERNAME IS NULL THEN
               X_RETURN_MSG := '手机号可以使用';
            END IF;
           IF P_PHONE = T_TUP.PHONE AND  T_TUP.USERNAME !=P_USERNAME THEN
                     X_RETURN_MSG := '手机号存在,用户名不存在';
            END IF;
            END LOOP;



END TEST_LLP_THREE;
END TEST_LLP_PKG;

方法二:也是企业级方法

Packages代码

CREATE OR REPLACE PACKAGE TEST_LLP_PKG IS

-- P_PHONE 传入参数(IN)
-- P_USERNAME 传入参数(IN)
-- X_RETURN_MSG 传出参数(OUT)
-- VARCHAR2 为数据类型
PROCEDURE TEST_LLP_THREE(P_PHONE      IN VARCHAR2,
                          P_USERNAME   IN VARCHAR2,
                          X_RETURN_MSG OUT VARCHAR2);

END TEST_LLP_PKG;

Package bodies 代码

CREATE OR REPLACE PACKAGE BODY TEST_LLP_PKG IS

-- 加了个 IS
PROCEDURE TEST_LLP_THREE(P_PHONE      IN VARCHAR2,
                             P_USERNAME   IN VARCHAR2,
                             X_RETURN_MSG OUT VARCHAR2) IS
                             
     COUNT_EXIST_PHONE NUMBER := 0;
        COUNT_EXIST_SELF  NUMBER := 0;
        EMP_NAME          VARCHAR2(100) := '';
    
    
    BEGIN
    
    IF P_PHONE IS NULL OR P_USERNAME IS NULL THEN
    X_RETURN_MSG :='params is not null';
    END IF;
    
        -- 判断手机号是否已存在
        SELECT COUNT(1) INTO COUNT_EXIST_PHONE FROM TEST_USER_PHONE T WHERE T.PHONE = P_PHONE;
    
        -- 判断是否自身拥有
        SELECT COUNT(1)
        INTO   COUNT_EXIST_SELF
        FROM   TEST_USER_PHONE TT
        WHERE  TT.USERNAME = P_USERNAME AND TT.PHONE = P_PHONE;
    
        IF COUNT_EXIST_SELF > 0 THEN
            X_RETURN_MSG := '是您自己的';
        ELSE
        
            IF COUNT_EXIST_PHONE > 0 THEN
                X_RETURN_MSG := '已被占用';
            ELSE
                X_RETURN_MSG := '可以使用';
            END IF;
        
        END IF;


END TEST_LLP_THREE;
END TEST_LLP_PKG;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值