zoukankan      html  css  js  c++  java
  • 如何在各种环境中处理多成员的物理文件

     SQL是与平台无关的数据库操作语言,虽然它无法处理iSeries上包含多成员的物理文件(表),但是它与RPG/COBOL一样,是可以处理写入数据库文件的物理文件成员。所以,您可以通过命令OVRDBF和SQL一起来处理多成员的物理文件:

    OVRDBF FILE( name ) TOFILE( toname ) MBR( name ) OVRSCOPE( *JOB )

    这里有几点值得注意的地方:
    1. 您只能OVERRIDE一个成员,而不是所有成员;
    2. 参数OVRSCOPE( *JOB )保证了OVERRIDE的动作即使在不同的activation group中执行,也能被识别;
    3. 建议使用参数OVRSCOPE( *JOB ),除非您希望明确的限定OVERRIDE的范围。

    要解除OVERRIDE,请使用命令DLTOVR:

    DLTOVR FILE( name ) LVL( *JOB )

    参数LVL的意义相当于OVRDBF命令中的参数OVRSCOPE,指定了OVERRIDE的范围。

    根据您使用SQL的不同方法,OVERRIDE成员的方法也不尽相同:

    1. iSQL环境:

    在iSQL环境中,最简单的方法是在进入SQL环境之前在5250命令行运行命令OVRDBF,如果您已经进入了iSQL环境,您也可以使用以下的命令启动5250命令行:

    CALL QCMD

    在执行完OVRDBF命令后,按F3就可以退出5250命令行,返回iSQL环境,注意,如果您指定的参数OVRSCOPE( *JOB ),系统仍然能够识别您要OVERRIDE的内容。

    2. 嵌入式SQL环境:

    在嵌入式SQL环境中,要想OVERRIDE一个成员,就要使用QCMDEXC,举例说明,在ILE RPG中,您定义的QCMDEXC原型为:

    d runCommand pr extpgm( 'QCMDEXC' )
    d command_ 999 const
    d size_ 15p 5 const
    d commandSize s 15p 5 inz( 999 )

    接着, 在执行SQL语句之前运行以下的OVERRIDE:

    /free
    runCommand( 'OVRDBF FILE(name) TOFILE(name) ' 'MBR(name) OVRSCOPE(*JOB)': commandSize )
    /end-free

    3. ODBC/OLE DB环境:

    3.1 通过存储过程调用来实现OVRDBF

    在ODBC中是可以通过调用要运行的命令的系统API来执行该命令。通过这种技术,就可以在执行SQL之前将您希望使用的成员使用OVRDBF命令来OVERRIDE。例如:

    CALL QSYS.QCMDEXC('OVRDBF FILE(USER1) TOFILE(MYLIB/USER1) MBR(COMPANY) OVRSCOPE(*JOB)', 0000000066.00000)

    其中:0000000066.00000分别是10位/5位的固定长度的十进制字段,在例子中的值66是单引号中全部字符的长度,包括空格。注意:剩下的数字位必须为0。

    下面的URL上有一个Visual Basic ODBC的例子,请参阅:

    ftp://testcase.software.ibm.com/as400/fromibm/ApiSamples/

    3.2 通过SQL别名来实现OVRDBF

    在OS/400 R430及以上版本支持SQL有关别名的语句。为每一个您需要访问的成员创建一个别名,并通过在ODBC中访问这些别名来达到访问不同成员的目的。由于别名是固定的,所以只需要创建一次,任何SQL工具,例如:iSQL,3.1中提到的ODBC例程,等等,都可以用来创建这些别名。例如:

    CREATE ALIAS MYLIB.FILE1MBR1 FOR MYLIB.MYFILE(MBR1)
    CREATE ALIAS MYLIB.FILE1MBR2 FOR MYLIB.MYFILE(MBR2)

    创建了不同的别名后,PC上的应用就可以指定MYLIB.FILE1MBR1 或 MYLIB.FILE1MBR2 来访问您想要访问的成员了。

    在ODBC中使用别名的注意事项:
    1. 一个别名被ODBC目录功能返回的类型是"ALIAS"。有一些应用可能不会把别名当成可用的表名显示在数据库中;
    2. 即使物理文件,库不存在了,别名依然可以独立存在(类似于符号连接);
    3. 在SQL语句中使用别名参照的成员是有一些限制的,具体内容参照DB2 for AS/400 SQL Reference (SC41-5612)
    书中的详细描述。

    参考资料:
    DB2 for AS/400 SQL Reference (SC41-5612)
  • 相关阅读:
    MyBatis动态SQL语句
    MyBatis分页
    理解 Linux 的处理器负载均值
    Linux命令之du
    Linux命令之df
    Linux命令之lsof
    maven打包加时间戳
    多线程学习-ListenableFuture使用介绍以及示例
    Host is not allowed to connect to this MySQL server解决方法
    Dapper,大规模分布式系统的跟踪系统
  • 原文地址:https://www.cnblogs.com/wildfish/p/1032034.html
Copyright © 2011-2022 走看看