数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
PL/SQL变长和固定长度文件读入函数

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

固定长度文件读入:
 -------------------------------------------------------------------
 -- 共通固定長ファイル区切り関数
 -- 機能: 固定長ファイル区切り取得
 -- 引数: PV2_STRING        IN    VARCHAR2    処理フィールド
 --        PNU_POS_BEGIN    IN    NUMBER      開始位置
 --        PNU_POS_LEN      IN    NUMBER      桁数
 -- 戻り値:VARCHAR2    処理結果
 -------------------------------------------------------------------
 FUNCTION FNC_GET_SUBSTR(
  PV2_STRING  IN  VARCHAR2,
  PNU_POS_BEGIN IN  NUMBER,
  PNU_POS_LEN  IN  NUMBER
 )
 RETURN VARCHAR2
 IS
 BEGIN
  IF PNU_POS_BEGIN >0 AND PNU_POS_LEN > 0 THEN

   IF LENGTH(PV2_STRING) > PNU_POS_BEGIN + PNU_POS_LEN - 1 THEN

    RETURN TRIM(SUBSTRB(PV2_STRING,PNU_POS_BEGIN,PNU_POS_LEN));

   ELSE

    RETURN GCV2_NULL;

   END IF;

  ELSE
   RETURN GCV2_NULL;
  END IF;


 EXCEPTION
  WHEN OTHERS THEN
   RETURN GCV2_NULL;

 END FNC_GET_SUBSTR;


变长,CSV,TAB等文件读入
 -------------------------------------------------------------------
 -- 共通可変長タブ区切り関数
 -- 機能: 可変長タブ区切り取得
 -- 引数: PV2_STRING      IN    VARCHAR2    処理フィールド
 --        PNU_POSITION    IN    NUMBER      項目位置
 --        PV2_SEPARATE    IN    VARCHAR2    可変長タブ
 -- 戻り値:VARCHAR2    処理結果
 -------------------------------------------------------------------
 FUNCTION FNC_GET_POSSTR(
  PV2_STRING  IN  VARCHAR2,
  PNU_POSITION  IN  NUMBER,
  PV2_SEPARATE IN  VARCHAR2
 )
 RETURN VARCHAR2
 IS
  WNU_POS_BEGIN   NUMBER;
  WNU_POS_END    NUMBER;
 BEGIN

  IF PNU_POSITION = 1 THEN

   WNU_POS_BEGIN := 1;
   IF INSTRB(PV2_STRING,PV2_SEPARATE,1,1) = 0 THEN
    RETURN GCV2_NULL;
   ELSE
    WNU_POS_END  := INSTRB(PV2_STRING,PV2_SEPARATE,1,1);
   END IF;

  ELSIF PNU_POSITION > 0 THEN

   IF INSTRB(PV2_STRING,PV2_SEPARATE,1,PNU_POSITION) = 0 THEN

    IF INSTRB(PV2_STRING,PV2_SEPARATE,1,PNU_POSITION-1) = 0 THEN

     RETURN GCV2_NULL;

    ELSE

     WNU_POS_BEGIN := INSTRB(PV2_STRING,PV2_SEPARATE,1,PNU_POSITION-1) + 1;
     WNU_POS_END  := LENGTH(PV2_STRING);

    END IF;

   ELSE

    WNU_POS_BEGIN := INSTRB(PV2_STRING,PV2_SEPARATE,1,PNU_POSITION-1) + 1;
    WNU_POS_END  := INSTRB(PV2_STRING,PV2_SEPARATE,1,PNU_POSITION);

   END IF;

  ELSE

   RETURN GCV2_NULL;

  END IF;

  RETURN TRIM(SUBSTRB(PV2_STRING,WNU_POS_BEGIN,WNU_POS_END - WNU_POS_BEGIN -1));

 EXCEPTION
  WHEN OTHERS THEN
   RETURN GCV2_NULL;
 END FNC_GET_POSSTR;




相关文章

相关软件