prompt
prompt Creating procedure P_BSS_QUERYACCOUNT
prompt =====================================
prompt
CREATE OR REPLACE PROCEDURE P_BSS_QUERYACCOUNT
/*
Description : 查询用户基本的订购信息
Author : 刘宏宗 57983
Date : 2007-06-14
Version : VMS V2.0D500
Caller : com.huawei.umcp.bss.dao.AccountInfoDAO.query()
Callee :
Comments : 相关表: T_BSS_ACCOUNTINFO
History :
1. Date : 2007-06-14
Author : 刘宏宗 57983
Modification : 创建
2. ......
*/
(
i_UserNo VARCHAR2, -- 用户号码
i_SubboxNo VARCHAR2,--用户的子邮箱号码
i_StartTime DATE, -- 开始时间
i_EndTime DATE, -- 结束时间
i_AreaCode VARCHAR2, -- 区号
i_StartNum NUMBER, -- 起始记录数
i_EndNum NUMBER, -- 结束记录数
i_QueryType NUMBER, -- 查询类型 1查总数 2查内容 3按号码查询
o_AccountInfoRef OUT SYS_REFCURSOR, -- 用户返回游标
o_Count OUT NUMBER, -- 总记录数(最大返回10000,10001表示超过10000条数据)
o_Ret OUT NUMBER -- 返回值
) AS
v_StartTime DATE;
v_EndTime DATE;
BEGIN
o_Ret := 1;
o_Count := 0;
IF i_StartTime IS NULL THEN
v_StartTime := TO_DATE('1970', 'YYYY');
ELSE
v_StartTime := i_StartTime;
END IF;
IF i_EndTime IS NULL THEN
v_EndTime := TO_DATE('2050', 'YYYY');
ELSE
v_EndTime := i_EndTime;
END IF;
IF i_QueryType = 1 THEN
-- 判断用户号码是否为空
IF i_UserNo IS NULL THEN
SELECT COUNT(1)
INTO o_Count
FROM T_BSS_ACCOUNTINFO t
WHERE ROWNUM < 10001
AND OPEN_TIME >= v_StartTime
AND OPEN_TIME <= v_EndTime;
ELSE
IF I_AREACODE IS NULL THEN
SELECT COUNT(1)
INTO o_Count
FROM T_BSS_ACCOUNTINFO t
WHERE ROWNUM < 10001
AND OPEN_TIME >= v_StartTime
AND OPEN_TIME <= v_EndTime
AND PARTCOL_USERNO = SUBSTR(i_UserNo, -3, 2);
ELSE
SELECT COUNT(1)
INTO o_Count
FROM T_BSS_ACCOUNTINFO t
WHERE ROWNUM < 10001
AND AREA_CODE = NVL(i_AreaCode, AREA_CODE)
AND OPEN_TIME >= v_StartTime
AND OPEN_TIME <= v_EndTime
AND PARTCOL_USERNO = SUBSTR(i_UserNo, -3, 2);
END IF;
END IF;
OPEN o_AccountInfoRef FOR
SELECT NULL FROM dual WHERE 1 = 0;
o_Ret := 0;
RETURN;
END IF;
IF i_QueryType = 3 THEN
OPEN o_AccountInfoRef FOR
SELECT USER_NO,
LEVEL_ID,
STATUS,
OPEN_TIME,
AREA_CODE,
PARTCOL_USERNO,
ADDITIONAL_INFO_1,
ADDITIONAL_INFO_2,
ADDITIONAL_INFO_3,
ATTRIBUTVE_POINT,
DATASITE_CODE,
FILESITE_CODE,
FEE_TYPE,
COUNTRY_CODE,
SUBBOX_NO
FROM T_BSS_ACCOUNTINFO
WHERE USER_NO = I_USERNO
AND ((I_AREACODE IS NULL) or(AREA_CODE = I_AREACODE ))
AND OPEN_TIME >= v_StartTime
AND OPEN_TIME <= v_EndTime
AND PARTCOL_USERNO = substr(i_UserNo, -3, 2);
SELECT COUNT(1)
INTO o_Count
FROM T_BSS_ACCOUNTINFO t
WHERE USER_NO = i_UserNo
AND ((I_AREACODE IS NULL) or(AREA_CODE = I_AREACODE ))
AND OPEN_TIME >= v_StartTime
AND OPEN_TIME <= v_EndTime
AND PARTCOL_USERNO = substr(i_UserNo, -3, 2);
o_Ret := 0;
RETURN;
END IF;
-- 判断用户号码是否为空
/*IF i_UserNo IS NULL THEN
-- 不附带条件查询所有订购信息
OPEN o_AccountInfoRef FOR
SELECT USER_NO,
LEVEL_ID,
STATUS,
OPEN_TIME,
AREA_CODE,
PARTCOL_USERNO,
ADDITIONAL_INFO_1,
ADDITIONAL_INFO_2,
ADDITIONAL_INFO_3,
ATTRIBUTVE_POINT,
DATASITE_CODE,
FEE_TYPE
FROM (SELECT USER_NO,
LEVEL_ID,
STATUS,
OPEN_TIME,
AREA_CODE,
PARTCOL_USERNO,
ADDITIONAL_INFO_1,
ADDITIONAL_INFO_2,
ADDITIONAL_INFO_3,
ATTRIBUTVE_POINT,
DATASITE_CODE,
FEE_TYPE,
ROWNUM ROWNO
FROM T_BSS_ACCOUNTINFO
WHERE OPEN_TIME >= v_StartTime
AND OPEN_TIME <= v_EndTime) a
WHERE a.ROWNO >= nvl(i_StartNum, 0)
AND a.ROWNO <= nvl(i_EndNum, 15);
-- 查询数据库中符合条件的用户数量
SELECT COUNT(1)
INTO o_Count
FROM T_BSS_ACCOUNTINFO t
WHERE ROWNUM < 10001
AND OPEN_TIME >= v_StartTime
AND OPEN_TIME <= v_EndTime;
ELSE*/
-- 附带UserNo条件查询相应订购信息
OPEN o_AccountInfoRef FOR
SELECT USER_NO,
LEVEL_ID,
STATUS,
OPEN_TIME,
AREA_CODE,
PARTCOL_USERNO,
ADDITIONAL_INFO_1,
ADDITIONAL_INFO_2,
ADDITIONAL_INFO_3,
ATTRIBUTVE_POINT,
DATASITE_CODE,
FILESITE_CODE,
FEE_TYPE,
COUNTRY_CODE
FROM T_BSS_ACCOUNTINFO
WHERE USER_NO = I_USERNO
AND ((i_SubboxNo IS NULL AND SUBBOX_NO IS NULL) or (SUBBOX_NO = i_SubboxNo))
AND ((I_AREACODE IS NULL) or(AREA_CODE = I_AREACODE ))
AND OPEN_TIME >= v_StartTime
AND OPEN_TIME <= v_EndTime
AND PARTCOL_USERNO = substr(i_UserNo, -3, 2);
SELECT COUNT(1)
INTO o_Count
FROM T_BSS_ACCOUNTINFO t
WHERE USER_NO = i_UserNo
AND ((i_SubboxNo IS NULL AND SUBBOX_NO IS NULL) or (SUBBOX_NO = i_SubboxNo))
AND ((I_AREACODE IS NULL) or(AREA_CODE = I_AREACODE ))
AND ROWNUM < 10001
AND OPEN_TIME >= v_StartTime
AND OPEN_TIME <= v_EndTime
AND PARTCOL_USERNO = substr(i_UserNo, -3, 2);
/*END IF;*/
o_Ret := 0;
RETURN;
EXCEPTION
WHEN OTHERS THEN
o_Ret := 1;
IF o_AccountInfoRef%ISOPEN THEN
CLOSE o_AccountInfoRef;
END IF;
OPEN o_AccountInfoRef FOR
SELECT NULL FROM dual WHERE 1 = 0;
P_COMM_ADDEXCEPTION('P_BSS_QUERYACCOUNT', SQLERRM, SQLCODE, 'i_UserNo=' || i_UserNo);
END P_BSS_QUERYACCOUNT;
/
分享到:
相关推荐
在这个“rpc-Remote Procedure Call源码1”的压缩包中,包含了多个示例项目,它们可以帮助我们深入理解RPC的工作原理。 1. RPC基本概念: - 远程调用:RPC使得开发者可以像调用本地函数一样调用远程服务器上的函数...
这些工具可以从二进制输出数据库读取数据,并提供了多种展示结果的方式,例如色彩等值线图、动画演示、变形形状图和X-Y曲线图等。 #### 三、ABAQUS模型的组成部分 一个完整的ABAQUS模型(即FEM模型)包含多个不同的...
这个"chord算法演示源代码"是一个使用C++编程语言在Visual Studio 2008环境下编写的控制台应用程序,它提供了对Chord算法的直观展示。 Chord算法的核心概念是将网络中的节点通过一个固定大小的ID空间进行映射,每个...
Delphi是一款强大的面向对象的 Pascal 编程语言,而链表是C++编程中常见的数据结构之一,因此,这个演示将帮助我们理解如何在Delphi中实现类似C++的链表功能。 首先,我们需要了解链表的基本概念。链表不同于数组,...
这个“Delphi演示鼠标悬停显示数据”项目可能是一个示例程序,它展示了如何在Delphi应用中实现鼠标悬停时动态显示相关信息的功能。这个功能在很多用户界面设计中都很常见,比如图表分析、数据库浏览或自定义控件等...
本演示将详细解释如何实现这一功能。 首先,动态创建控件通常涉及TControl类的子类,如TButton、TLabel或TEdit等。在Delphi中,我们可以通过以下步骤来创建一个动态的控件: 1. 在代码中声明控件变量,例如: ```...
这个猜想简单来说,就是任何大于2的偶数都可以表示为两个质数之和。尽管经过了无数尝试,至今仍未找到一个通用的证明方法。然而,这并不妨碍我们通过编程来模拟和验证这一猜想。 Delphi,作为一个强大的面向对象的 ...
在提供的"鼠标位置"源程序中,可能包含了类似的逻辑,演示了如何在Delphi程序中实时跟踪和显示鼠标的当前位置。通过分析这个源程序,开发者可以更好地理解如何在自己的项目中实现相同的功能,无论是为了调试,还是...
以下是一个简单的示例: ```delphi uses Windows; var MutexHandle: THandle; begin MutexHandle := CreateMutex(nil, False, 'MyUniqueMutexName'); // 创建互斥体,'MyUniqueMutexName'为互斥体名称,必须...
描述这是一个简单的项目,它演示了如何为特定存储过程配置 Spring bean 并参与 Apache Camel 路由。设置和安装设置环境和运行此演示的步骤: 查找可用的 Oracle 数据库环境,或安装 Oracle XE 11g。 转至下载它及其...
为了演示Params属性的使用,压缩包中的小例子很可能会包含一个简单的测试程序,它创建一个动态的方法或者过程,并通过Params传递参数。在运行这个例子时,可以看到如何通过Params属性将参数传递到动态创建的代码中,...
CREATE PROCEDURE GetPagedData @CurrentPage INT, @PageSize INT AS BEGIN SELECT * FROM YourTable OFFSET (@CurrentPage - 1) * @PageSize ROWS FETCH NEXT @PageSize ROWS ONLY; END ``` 2. 在C#中调用...
7. **文本文件和二进制文件**:"open.txt"可能是用来演示读写的文本文件。MATLAB可以处理文本文件(ASCII或UTF-8编码)和二进制文件。二进制文件的读写通常使用`fwrite`和`fread`,它们允许直接操作原始字节数据,...
Delphi 隐藏桌面图标 并显示图标,运行这个小程序后,单击窗口上的对应按钮,即可演示对应的功能,其实实现这个功能挺简单的,可以使用Delphi中内置的函数功能来实现,比如: procedure TForm1.Button1Click...
本示例“Delphi演示TDBGrid组件的斑马线提示功能”着重介绍了如何在TDBGrid中实现斑马线效果,以提高数据浏览的可读性和用户体验。 斑马线提示功能,即交替行颜色,通常表现为奇数行和偶数行采用不同的背景色,这样...
下面是一个简单的示例: ```delphi procedure TMyForm.FormActivate(Sender: TObject); var RequestInfo: TIWRequestInfo; ParamValue: string; begin RequestInfo := IWApplication.Request; if ...
**MASM32编程演示:窗口与全屏模式切换** MASM32是Microsoft Macro Assembler的32位版本,它是一种低级汇编语言工具,用于编写Windows平台下的应用程序。这个程序示例展示了如何利用MASM32来实现一个功能,即允许...
- 虽然这里讨论的是简单的文本提示,但`TMessageNotification`还支持更复杂的功能,如自定义动作、声音和振动等,可以根据实际需求进行配置。 通过以上步骤和知识点,你应该能理解如何在Delphi XE5下为Android平台...