您可以執行動態 SQL 支援的任何 SQL 陳述式。
若要執行 SQL 陳述式,請定義一個函數,來使用 SQL (DTW_SQL) 語言環境,並在函數的語言環境可執行區段中含有 SQL 陳述式。
範例:執行 SQL SELECT 陳述式的 SQL 函數:
%function(DTW_SQL) getOrders() {
SELECT cust, custid, custorder FROM mylibrary.customers
%}
確定控制
依據預設值,SQL 語言環境會在確定控制下執行,並遵循所有管理確定控制的規則。
異動管理的詳細資訊,請參閱"管理 Net.Data 應用程式中的異動"。
OUT 及 INOUT 表格
如果您在函數定義上指定 OUT 或 INOUT Net.Data 表格, 且 SQL 陳述式傳回結果集合,則 SQL 語言環境會將每一結果集合儲存在指定的表格中。 然後,您可以在巨集中使用表格。如果未指定 OUT 表格,則 SQL 語言環境將使用預設表格。
巢狀 SQL 陳述式
您可以從另一個 SQL 函數的 ROW 區塊內呼叫其他 SQL 函數。 在每一 SQL 函數中使用唯一的 Net.Data 表格名稱,否則,可能會發生無法預期的結果。
範例:從另一個 SQL 函數的 ROW 區塊呼叫 SQL 函數
%define mytable1 = %TABLE
%define mytable2 = %TABLE
%FUNCTION(DTW_SQL) sql2 (IN p1, OUT t2) {
select * from NETDATA.STAFFINF where projno='$(p1)'
%REPORT {
%ROW { $(N1) is $(V1) %}
%}
%}
%FUNCTION(DTW_SQL) sql1 (OUT t1) {
select * from NETDATA.STAFFINF
%REPORT {
%ROW { @sql2(V1, mytable2) %}
%}
%}
%HTML(netcall1) { @sql1(mytable1) %}
SQL 語言環境支援為了支援 DB2 而設計的變數。 例如,DATABASE 變數指定當執行 SQL 陳述式時,SQL 語言環境將連接的資料來源。下列列示指定 SQL 語言環境支援的變數。 請參閱 Net.Data 參考手冊,取得這些變數的說明、語法及範例。
SQL 語言環境支援表 5中所示的資料類型
| BLOB(1) | DOUBLE | SMALLINT |
| CHAR | DOUBLEPRECISION | TIME |
| CLOB(1) | FLOAT | TIMESTAMP |
| DATE | GRAPHIC | VARCHAR |
| DBCLOB(1) | INTEGER | VARGRAPHIC |
| DECIMAL | REAL |
|
(1) 這些資料類型無法以參數形式傳遞到儲存程序。 若要瞭解儲存程序支援的資料類型,請參閱"儲存程序語法"
請參閱"資料類型注意事項",瞭解 LOB 及 DATALINK 資料類型的特殊注意事項。
當規劃您的環境時,請考慮下列限制:
請參閱"管理多個資料庫連線",取得這些限制的詳細資訊。