若要找出 DB2® for i 和「結構化查詢語言 (SQL)」問題的解答,請查閱此資料庫的常見問題集。
DB2 for i 是關聯式資料庫管理程式, 其完全整合至 IBM System i 產品。 因為已經整合,所以容易使用與管理 DB2 for i。DB2 for i 也提供許多適用於各種應用程式類型的功能,例如觸發程式、儲存程序,以及動態點陣索引。這些應用程式的範圍包括從傳統的主機型應用程式到針對商用智慧型應用程式的主從架構解決方案。
由於作為 DB2 for i 的介面, IBM DB2 Query Manager and SQL Development Kit for i 授權程式新增互動式查詢和報表撰寫介面, 以及前置編譯器和工具,協助您以高階程式設計語言撰寫 SQL 應用程式。IBM i 作業系統的 SQL 實作符合工業標準的 SQL,讓您可以定義、操作、查詢資料及控制資料的存取權限。並可與 i5/OS 檔案及 SQL 表格併用。
是的。DB2 for i 是 DB2 系列的產品, DB2 系列的產品也包括 DB2 for z/OS® 以及 DB2 for Linux®, UNIX® and Windows®。
每一個 DB2 系列的產品有自己唯一的程式碼庫、函數和 SQL 語法。然而,整個 DB2 產品仍有技術共用。如需瞭解 DB2 產品之間的關係, 請參閱下列資訊:
如果您使用 System i 產品,即有 DB2 for i。DB2 for i 的層次是基於 i5/OS 作業系統,且與 DB2 版本架構無關。因為 DB2 for i 隨附於 i5/OS 作業系統,所以 DB2 for i 的版本、版次及修正層次同於作業系統。這通常表示為 VxRyMz,其中 x 為版本,y 為版次, z 為修正層次。若您不知作業系統的版本、版次及修正層次,請遵循下列步驟:
是的。 您可以在 SQL 程式設計主題集的 DB2 for i 範例表格中找到範例表格,以及系統提供用來建立這些表格的儲存程序。
不需要安裝 DB2 for i。 它隨附於 i5/OS 作業系統版次。
使用 SQL GRANT 和 REVOKE 陳述式,搭配 i5/OS 安全介面,可以控制 DB2 物件存取權限。 請參閱「資料庫」程式設計主題集的保護資料庫檔案安全主題。「System i 領航員」亦可用來授權使用者。如需詳細資訊,請參閱使用「System i 領航員」授權使用者或群組。
您可以使用 「System i 領航員」來管理 DB2 for i。在「System i 領航員」中有一項工具可以處理資料庫。您可以採用資料庫的傳統樹狀結構視圖,或採用資料庫物件的視覺化表示法,稱為資料庫領航員。如需使用「資料庫領航員」的詳細資訊, 請參閱對映您的資料庫。
是的。如需相關指示,請參閱 Co-existing with "long" SQL table and column names。
您可以使用 從匯入檔複製 (CPYFRMIMPF) 和複製到匯入檔 (CPYTOIMPF) 指令,在系統之間匯入 (載入) 或匯出 (卸載) 資料。如需指示,請參閱在系統之間匯入和匯出資料。
IBM 提供數本手冊,可幫助您從其他資料庫(如 Oracle 及 SQL Server)將資料移動至 DB2 for
i。如需這些指示,請參閱 DB2 for
i Porting Information。
是的。如需如何使用已提供的範例資料來設定資料庫、將 SQL 資料對映至 XML 文件、在資料庫中儲存 XML 文件,以及搜尋和取出 XML 文件資料的相關教學指導,請參閱 XML Extender Administration
and Programming 手冊。
是的。您可以在 「分散式資料庫程式設計」主題集的使用者常見問題集中進一步瞭解。
您可以遵循下列步驟來產生包含檔名之所有查詢的報告:
是的。 提供給系統的圖形查詢介面軟體包含 DB2 Query Management Facility 以及 DB2 Web Query Tool
。
若要結合相同表格的兩個成員,您可以為其中一個成員建立別名,再使用別名將兩者結合起來。 若要使用 SQL 來建立別名,請參閱建立和使用別名或建立資料庫物件。
您可以使用執行 SQL 陳述式 (RUNSQLSTM) 指令,來執行文字檔中的 SQL 陳述式。 或者,您可以透過「System i 領航員」使用「執行 SQL Script」來執行 PC 或整合檔案系統中的文字檔。請參閱藉由執行 SQL script 查詢資料庫。
SELECT 'ITEM' AS ROWTYPE, PARTID, PRICE FROM PART UNION SELECT 'TOTAL' AS ROWTYPE, 0 AS PARTID, SUM( PRICE ) AS PRICE FROM PART ORDER BY ROWTYPE, PARTID
為了確保總計列顯示在結果集尾端,您必須加入 Order By 子句。
SQL CurDate 函數會傳回日期值,此值無法直接與數字或未格式化字元值做比較。 比較之前必須做一些轉換動作。請使用 SQL 函數來取得日期的年、月、日整數,然後建立 YYYMMDD 格式的數字日期。 請參閱 範例:根據目前日期選取記錄 中的程式碼。
若最近從 V4R4 升級成較新的版次或版本,可能有一些查詢效能方面的問題。
請參閱 IBM DB2 UDB Query Performance Behavior
Changes Since R440,取得可能的解決方案。
不可以。為表格、概略表或實體檔案建立別名時,請確定它位於目前的系統上。如需相關資訊,請參閱 CREATE ALIAS 以取得一些語法範例。
您可以建立別名, 指向您想存取的第一個成員。
CREATE ALIAS SALES_JANUARY FOR SALES(JANUARY)如需 SQL 參考主題集中的完整範例,請參閱 CREATE ALIAS。
當 DB2 for i 傳回錯誤碼到使用 SQL 的應用程式時,會顯示 SQL 訊息。在執行時期會顯示或記載訊息文字。
SQL0901:發生 SQL 系統錯誤。此為所有錯誤的一般訊息。如需 SQL0901 的相關資訊,請參閱 SQL 訊息與訊息碼。
您可以在 SQL 訊息與訊息碼 中找到 SQL 訊息與訊息碼的完整清單。或者,也可以使用 SQL 訊息搜尋器。
應用程式亦可藉由在 CL 指令擷取訊息 (RTVMSG)、傳送程式訊息 (SNDPGMMSG) 及傳送使用者訊息 (SNDUSRMSG) 中,指定訊息 ID 和替換文字,將對應於任何 SQLCODE 的 SQL 訊息傳送至工作日誌。
SQL 資料包是永久物件,用來儲存準備的 SQL 陳述式相關的資訊。 當勾選資料來源的「延伸動態」方框時,「開放式資料庫連接 (ODBC)」就會用到 SQL 資料包。另外,使用 API 的應用程式也會用到。
因為 SQL 資料包為共用資源,只要備妥陳述式,資料包的所有使用者隨即就可以使用資訊。 如此可節省處理時間,尤其在許多使用者採用相同或類似陳述式的情況下,效果更明顯。 因為 SQL 資料包為永久的,所以在工作起始和結束期間,以及系統重新啟動之後,也都會儲存此資訊。 事實上,SQL 資料包可以在其他系統上儲存和還原。 經過比較,動態 SQL 就需要每一位使用者完成特定陳述式的預備處理,且使用者每次啟動應用程式時都必須執行一次。
SQL 資料包亦可讓系統累積 SQL 陳述式的統計資訊,可以更適當地決定游標在內部開啟多久及如何妥善處理查詢所需的資料。 此資訊由使用者共用,且保留下來可以在未來使用。 以動態 SQL 而言,必須由每一項工作和每一位使用者收集此資訊。
SQL 資料包儲存著執行備妥陳述式的所有必要資訊。 包括陳述式名稱的登錄、陳述式文字、陳述式的內部剖析樹、陳述式涉及的所有表格和欄位的定義, 以及在執行時期存取表格所必備的查詢存取計劃。
請使用「列印 SQL 資訊 (PRTSQLINF)」指令來產生格式化報告, 此報告顯示用於存取資料的 SQL 陳述式和存取計劃的相關資訊。
SELECT qqc103, qqc21, qq1000 from <db monitor file>
對於 ODBC,您亦可查看工作日誌中的延伸動態已停用訊息,判斷 ODBC 是否無法使用 SQL 資料包。
如需其他 SQL 資料包常見問題集,請參閱 DB2 Universal Database™ for iSeries® Frequently Asked Questions: Improving Performance
with SQL Packages 網站。
使用「執行 SQL Script」來執行「System i 領航員」中的程序。首先,請開啟「執行 SQL Script」視窗。 然後,使用 CALL 陳述式來呼叫儲存程序,將參數傳給陳述式,並執行程序。 參數會傳回至「結果集」標籤,而輸出參數會傳回至「訊息」標籤。
是的。DB2 for i 支援外部儲存程序,可以將現有的高階程式當作儲存程序來呼叫。CREATE PROCEDURE 陳述式可用來將這些程式登記為儲存程序。
在執行 CREATE PROCEDURE 陳述式之前,必須執行 SET PATH 陳述式。 程式建立時,會同時定義前置編譯程式中的靜態陳述式路徑。 在 CREATE PROCEDURE 的案例中,建立一個 SQL C 程式。程序中的動態陳述式會使用現行路徑,但程序中的靜態陳述式則是使用建立時所使用的路徑。CREATE FUNCTION 陳述式亦然。
SELECT * from sysprocs where routine_name = 'MYPROC' and routine_schema = 'MYLIB'這會檢查在 mylib 中是否有名為 myproc 的儲存程序。 如果您不知道應該用哪一個程式庫,請勿將搜尋條件的 routine_schema 部份併入查詢中。 如需 SYSPROCS 型錄中所有直欄的定義,請參閱 i5/OS 型錄表格及概略表。您可能也對 SYSPARMS 型錄感興趣,它包含程序的參數定義。
當在指定的表格或指定的實體資料庫檔案上,執行指定的變更或讀取作業時,自動執行的一組動作就稱為觸發程式。 如需詳細資訊,請參閱在資料庫中觸發自動事件。
從 V5R1 開始,您亦可使用 SQL 觸發程式。 當執行插入、更新或刪除動作時,SQL CREATE TRIGGER 陳述式讓資料庫管理系統可以積極地控制、監視及管理一組表格。每次執行 SQL 插入、更新或刪除動作時,就會自動執行 SQL 觸發程式內指定的陳述式。 SQL 觸發程式在執行時,可以呼叫儲存程序或使用者定義的函數來執行其他處理。 如需詳細資訊,請參閱 SQL 觸發程式。
可能是記錄的偏移已變更。在以往幾個版次中,偏移不會變更。但在 V5R1 裡已經變更,後續的版次裡也可能變更。撰寫觸發程式時一律使用傳入觸發程式緩衝區的偏移和長度,就是最簡單的解決方案。 如需觸發程式緩衝區中的欄位摘要,請參閱觸發程式緩衝區欄位說明。
SQL 觸發程式的內文可以使用 REFERENCING NEW ROW 和 REFERENCING OLD ROW 子句,來參照儲存於觸發程式緩衝區中前後記錄映像檔中的欄位。然而,SQL 觸發程式無法直接參照觸發程式緩衝區, 也無法參照緩衝區中的其他資訊。例如,SQL 觸發程式無法使用觸發時間和觸發事件 。