![]() 前へ |
![]() 次へ |
次は、置換を示す、コード・テンプレートおよび関連するメタデータ・スクリプトのコード例です。次のコード・ブロックは、一時フロー表を作成する、コード・テンプレートの単一のプロシージャ手順を示しています。
proc 3_CREATE_FLOW_TABLE_I__main { }
{# Input Flow Parameters variable SRC_LOCATION variable TGT_LOCATION variable KM_PARAMS variable LOG_LEVEL variable INSERT variable UPDATE variable COMMIT variable SYNC_JRN_DELETE variable FLOW_CONTROL variable RECYCLE_ERRORS variable STATIC_CONTROL variable TRUNCATE variable DELETE_ALL variable CREATE_TARG_TABLE variable FLOW_TABLE_OPTIONS variable ANALYZE_TARGET variable OPTIMIZER_HINT# Output parameters variable EXIT_CODE variable RETURN_VALUE {}# Global variables global errorInfo global g_iud set g_iud "" set tgt_stmt [process "create table <%=snpRef.getTable(\"L\", \"INT_NAME\", \"W\")%>\n(\n<%=snpRef.getColList(\"\", \"\\t\[COL_NAME\]\\t\[DEST_WRI_DT\] NULL\", \",\\n\", \"\", \"\")%>,\n\tIND_UPDATE \tchar(1)\n)\n<%=snpRef.getUserExit(\"FLOW_TABLE_OPTIONS\")%>"] puts $tgt_stmt execjdbc $tgt_stmt "TGT_AC" "$TGT_LOCATION" "" "true" "false" "false"}
ターゲットのSQL文である変数tgt_stmtには実際のSQL文が割り当てられ、このSQL文はexecjdbcプロシージャ・コールを使用して実行されていることに注意してください。execjdbc TCLプロシージャは、JDBCを介して文を実行するJavaコールを実行します。ターゲット文は、プロセス・プロシージャによって生成される文字列です。<%...%>デリミタには、必要なコンポーネントをSQL文字列に置き換えるための特別な処理が必要です。snpRef(Sunopsis参照)タグは、置換メソッド・コールアウトの接頭辞です。snpRef.getTableは、実際の表名によって置き換えられます。snpRef.getColListは、DMLに関与する表列のリストを取得するための別のユニバーサル・メソッドです。snpRef以外に、odiRefもサポートされています(ODI 10.2の場合)。
置換メソッド(snpRef)・コールは、メタデータ・スクリプトの変数から関連データを抽出するOWB TCLモジュールによって実行されます。次は、表名と列リストを示すメタデータ・スクリプト・セクションの例です。
set M1_params { {CKM_CALL ""} {COLUMN_GENERIC_DATATYPE "NUMERIC VARCHAR"} {COLUMN_LIST "EMPLOYEES.EMPLOYEE_ID EMPLOYEES.LAST_NAME"} {COLUMN_LIST_ALIAS "EMPLOYEE_ID LAST_NAME"} {COLUMN_LIST_DATATYPE "NUMBER(6) VARCHAR2(25)"} {EXECUTION_UNIT_NAME "EX_UNIT_2"} {FROM_LIST "EMPLOYEES"} {FROM_LIST_ALIAS "EMPLOYEES"} {HAS_JRN "0"} {INSERT_COLUMN_LIST "EMPID ENAME"} {IS_DISTINCT "FALSE"} {JOURNAL_IN_CURRENT_SCHEMA "false"} {JOURNAL_IN_SOURCE_SCHEMA "false"} {JOURNAL_IN_STAGING_AREA "false"} {JRN_FILTER ""} {JRN_METHOD "NONE"} {JRN_TABLE "."} {KM_NAME "KM_IKM_ORACLE_INCREMENTAL_UPD"} {MAP_NAME "MAPPING_2"} {SELECT_STATEMENT "SELECT EMPLOYEES.EMPLOYEE_ID EMPLOYEE_ID, EMPLOYEES.LAST_NAME LAST_NAMEFROM EMPLOYEES EMPLOYEES"} {SQL_STATEMENT "INSERT INTO TGT(EMPID, ENAME) (SELECT EMPLOYEES.EMPLOYEE_ID EMPLOYEE_ID,EMPLOYEES.LAST_NAME LAST_NAMEFROM EMPLOYEES EMPLOYEES );"} {TARGET_COLUMN_DATATYPE "NUMBER(15) VARCHAR2(100)"} {TARGET_COLUMN_LIST "EMPID ENAME"} {TARGET_GENERIC_DATATYPE "NUMERIC VARCHAR"} {TARGET_NAME "TGT"}}