如何在各種環境中處理多成員的物理檔案

來源:互聯網
上載者:User
 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/200 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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.