接口存储过程
来源:互联网 发布:高性能mysql第4版百度 编辑:程序博客网 时间:2024/04/18 05:12
CREATE OR REPLACE PACKAGE BODY Pk_If_Epg_Bss IS
/********************************************************************************
* 包体名称: PK_IF_EPG_BSS
* 功能描述: 实现IPTV EPG_与 BSS 的一些接口功能
* 作 者:
* 编写日期: 2005.11.19
* 说 明:
* (1) 本过程包中的P_QUERY_AUTH, P_QUERY_ORDER, P_QUERY_BILL 是返回字符串结果的,目前(P_QUERY_BILL)暂没有用,留待对性能要求更高时备用.
* 实现同样功能的还有返回结果集的另一个版本,包含在过程包 PG_IO_EPG 中, 是目前在用的版本.
*
* 修改历史:
* 修 改 人 日 期 修改说明
* -------- -------- ----------------------------------------------------------
* 遗留问题:
* (3)有些表都没有判断生效/失效日期(等相关数据完整、严密之后加上)。
* (4)验证和实际扣费可能需要分离,也就是说,先验证返回结果给IPTV平台,用户实际点播使用成功后IPTV平台再发扣费请求。
********************************************************************************/
PROCEDURE p_User_Login_Authen --用户登录时认证
(
Pi_Stbid IN VARCHAR2, --机顶盒编号
Pi_Userid IN VARCHAR2, --用户帐号
Pi_Password IN VARCHAR2, --用户密码
Pi_Ipaddr IN VARCHAR2, --机顶盒IP地址
Po_Usertoken OUT VARCHAR2, --用户令牌
Po_Userid_Out OUT VARCHAR2, --用户帐号 (输入参数中用户帐号为空时需要返回用户帐号)
Po_Nickname OUT VARCHAR2, --用户名称
Po_Accountno OUT VARCHAR2, --宽带接入帐号
Po_Detailparams OUT VARCHAR2, --扩展信息
Po_Returncode OUT VARCHAR2, --认证结果 0-认证成功,1-认证失败
Po_Message OUT VARCHAR2 --返回消息, 认证失败时返回具体的失败原因
) IS
/********************************************************************************
* 过程名称: P_USER_LOGIN_AUTHEN
* 功能描述: 用户登录时认证
* 作 者: 王占通
* 编写日期: 2005.11.19
* 修改历史:
* 修 改 人 日 期 修改说明
* -------- -------- --------------------------------------------------------------
********************************************************************************/
Vc_Query_Pwd Serv.Query_Pwd%TYPE;
Vc_Width_Type Serv.Width_Type%TYPE;
Vc_Serv_Id Serv.Serv_Id%TYPE;
Vc_State Serv.State%TYPE;
Vc_State1 Serv_Terminal.State%TYPE;
Vc_Area_Id Serv.Area_Id%TYPE;
Vc_Acc_Nbr Serv.Acc_Nbr%TYPE;
Vc_Acc_Nbr Serv.Acc_Nbr%TYPE;
Vc_Remark Serv.Remark%TYPE;
Vc_Width_Flux Serv.Width_Flux%TYPE;
Vc_Area_Name Area.NAME%TYPE;
Vc_Found CHAR(1);
Vc_Stpmsg VARCHAR2(2000);
BEGIN
Po_Returncode := '1';
Po_Userid_Out := Pi_Userid;
Vc_Found := '0';
Vc_State := 'F0A';
Vc_State1 := '1';
--若输入参数中用户帐号及密码为空,表明用户是首次登录认证,则需到用户表中根据机顶盒编号查找用户帐号。
--否则根据用户帐号查询。
IF Pi_Userid IS NULL THEN
Vc_Stpmsg := '根据输入机顶盒编号查找/验证用户信息';
BEGIN
SELECT User_Name,
Query_Pwd,
Nvl(Width_Type, ' '),
Width_Id,
Area_Id,
a.Serv_Id,
Width_Flux,
Acc_Nbr,
a.State,
Nvl(b.State, '1'),
Remark
INTO Po_Nickname,
Vc_Query_Pwd,
Vc_Width_Type,
Po_Accountno,
Vc_Area_Id,
Vc_Serv_Id,
Vc_Width_Flux,
Po_Userid_Out,
Vc_State,
Vc_State1,
Vc_Remark
FROM Serv a, Serv_Terminal b
WHERE a.Serv_Id = b.Serv_Id
AND b.Terminal_Id = Pi_Stbid;
EXCEPTION
WHEN OTHERS THEN
Vc_Found := '1';
END;
ELSE
Vc_Stpmsg := '根据输入用户帐号查找/验证用户信息';
BEGIN
SELECT User_Name,
Query_Pwd,
Nvl(Width_Type, ' '),
Width_Id,
Area_Id,
Serv_Id,
State,
Width_Flux
INTO Po_Nickname,
Vc_Query_Pwd,
Vc_Width_Type,
Po_Accountno,
Vc_Area_Id,
Vc_Serv_Id,
Vc_State,
Vc_Width_Flux
FROM Serv
WHERE Acc_Nbr = Pi_Userid;
EXCEPTION
WHEN OTHERS THEN
Vc_Found := '2';
END;
END IF;
IF Vc_Found <> '0' THEN
IF Vc_Found = '2' THEN
Po_Message := '用户帐号不存在.';
ELSE
Po_Message := '机顶盒编号不存在.';
END IF;
RETURN;
END IF;
IF Vc_State NOT IN ('F0A', 'F0B') THEN
Po_Message := '用户状态为非可用状态:' || Vc_Remark;
RETURN;
END IF;
IF Vc_State1 <> '1' THEN
Po_Message := '机顶盒状态为暂停状态';
RETURN;
END IF;
IF Vc_Query_Pwd <> Pi_Password Or Pi_Password IS NULL THEN
Po_Message := '用户密码不符.';
RETURN;
END IF;
SELECT 'RZ_' || To_Char(SYSDATE, 'yyyymmddhh24miss') || '_' ||
To_Char(Vc_Serv_Id)
INTO Po_Usertoken
FROM Dual;
SELECT NAME
INTO Vc_Area_Name
FROM Area
WHERE Area_Id = Vc_Area_Id;
Vc_Stpmsg := '得到扩展信息.';
Po_Detailparams := '<areaId>' || To_Char(Vc_Area_Id) || '</areaId>' ||
'<areaName>' || Vc_Area_Name || '</areaName>' || '<spId>' ||
'123' || '</spId>' || '<spName>' || '123' || '</spName>' ||
'<bandwidth>' || To_Char(Vc_Width_Flux) || '</bandwidth>';
IF Vc_State = 'F0B' THEN
--机顶盒第一次使用,自动激活
UPDATE Serv
SET State = 'F0A'
WHERE Serv_Id = Vc_Serv_Id;
END IF;
Vc_Stpmsg := '记录登录认证日志';
INSERT INTO t_If_Login_Log
(Usertoken, Acc_Nbr, Serv_Id, Login_Time, Stb_Id, Flag)
VALUES
(Po_Usertoken, Po_Userid_Out, Vc_Serv_Id, SYSDATE, Pi_Stbid, '1');
COMMIT;
Po_Returncode := '0';
RETURN;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
Vc_Stpmsg := Vc_Stpmsg || '错误号:' || SQLCODE || ' 错误信息:' || SQLERRM;
INSERT INTO Ut_Err_Log
(Proc, Errmsg, Err_Date)
VALUES
('P_USER_LOGIN_AUTHEN', Vc_Stpmsg, SYSDATE);
COMMIT;
Po_Message := '认证处理失败; ' || Vc_Stpmsg;
Po_Returncode := '1';
--vi_return := PG_SYS_MANAGER.F_SYS_ERROR_LOG(0,0,0,0,vc_stpmsg );
END p_User_Login_Authen;
- 接口存储过程
- 数据库对接接口存储过程
- oracle存储过程接口自动生成器(一)
- oracle存储过程接口自动生成器(二)
- Hibernate4 针对存储过程的接口封装
- 存储过程实现接口轻松传数据
- 存储过程实现可扩展灵活接口
- SqlServer2000 调用Http接口的存储过程
- WinCE 存储设备驱动加载_接口调用过程
- C# 调用SQL的存储过程的接口及实现
- mybatis+spring 中自动实现mapper接口调用存储过程
- 初学JDBC(七)-使用CallableStatement接口调用存储过程
- java基础巩固---jdbc接口CallableStatement执行存储过程
- 存储过程
- 存储过程
- 存储过程
- 存储过程
- 存储过程
- XP睡眠唤醒后不再要求输入密码(没有测试过)
- 2005 Java Developer’s Journal Readers’ Choice Awards
- 数据库中读取图片的问题
- 感冒了
- 用indent格式化C程序
- 接口存储过程
- 3年读完大学课程并考上北大光华金融系 真实之强
- 新域名 @live.com 和 @windowslive.com 即将上线 (from cnbeta)
- 发布一个使计算机睡觉的模块:modLetPcDormancy
- asp.net学习笔记
- C++ Primer 中文版(第4版) 不完全勘误表
- 做自己的系统分析师
- Microsoft Specific
- 我谈电信设计院