應用程式開發:設計伺服器應用程式

多個結果集共同語言執行時期 (CLR) 程序

共同語言執行時期 (CLR) 程序最多可以傳回多少個結果集是有限制的。 這個限制是由 DB2DataReader 物件數上限所決定,這個上限指出 DB2 .NET 資料提供者可以同時支援在一個連線開啟多少個這樣的物件。 並行作用中資料讀取器支援可讓您在一個連線內開啟多個 DB2DataReader 物件。因此, 可以從 CLR 程序傳回多個結果集。

共同語言執行時期 (CLR) 常式執行控制模式 (EXECUTION CONTROL 子句)

身為資料庫管理員或應用程式開發人員,您可能想要藉由限制常式在執行時期的動作, 來保護與 DB2 Universal Database(TM) (UDB) 外部常式相關的組件,避免發生不受歡迎的竄改。 DB2(R) .NET CLR 常式支援指定執行控制模式,來識別哪些類型的動作容許常式在執行時期執行。 在執行時期,DB2 UDB 可以偵測常式是否嘗試執行超出其指定之執行控制模式範圍的動作, 這在判定是否危及了組件時可能很有用。

若要設定 CLR 常式的執行控制模式,請在常式的 CREATE 陳述式中指定選用的 EXECUTION CONTROL 子句。有效模式如下:

若要修改現存 CLR 常式中的執行控制模式,請執行 ALTER PROCEDURE 或 ALTER FUNCTION 陳述式。

如果未指定 EXECUTION CONTROL 子句給 CLR 常式, 則依預設 CLR 常式會使用最有限制性的執行控制模式 (SAFE) 來執行。 利用這個執行控制模式建立的常式僅能存取資料庫管理程式所控制的資源。 較沒有限制性的執行控制模式容許常式存取本端檔案系統 (FILEREAD 或 FILEWRITE) 或網路上的檔案。 執行控制模式 UNSAFE 指定將沒有任何限制置於常式的行為上。 利用 UNSAFE 執行控制模式定義的常式可以執行二進位程式碼。

這些控制模式代表可容許動作的階層結構,而且較高階模式包括階層結構中在它之下所容許的動作。例如,執行控制模式 NETWORK 容許常式存取網路上的檔案,本端檔案系統上的檔案、以及資料庫管理程式所控制的資源。儘可能使用最有限制性的執行控制模式, 並避使用 UNSAFE 模式。

如果 DB2 UDB 在執行時期偵測到 CLR 常式正在嘗試超出其執行控制模式範圍外的動作, 則 DB2 UDB 將傳回一個錯誤 (SQLSTATE 38501)。

EXECUTION CONTROL 子句僅能指定給 LANGUAGE CLR 常式。 EXECUTION CONTROL 子句的適用範圍限制為 .NET CLR 常式本身, 而且不擴充至它可能呼叫的任何其他常式。

共同語言執行時期 (CLR) 常式中的最大小數精準度及小數位數

DB2 Universal Database (UDB) 中的 DECIMAL 資料類型是以 31 個精準度位數及 28 個小數位數來表示。 .NET CLR System.Decimal 資料類型限制為 29 個精準度位數及 28 個小數位數。因此, DB2 UDB 外部 CLR 常式不得指定大於 (2^96)-1 (這是可以使用 29 個精準度位數及 28 個小數位數來表示的最高值) 的值給 System.Decimal 資料類型變數。如果發生這樣的指定,DB2 UDB 將產生一個執行時期錯誤 (SQLSTATE 22003, SQLCODE -413)。

當執行常式 CREATE 陳述式時,如果定義了小數位數大於 28 的 DECIMAL 資料類型參數, DB2 UDB 將產生一個錯誤 (SQLSTATE 42611, SQLCODE -604)。

[ 頁面頂端 |前一頁 | 下一頁 | 目錄 ]