コード・ブロック
コード・ブロックは、データ・ソース、構造および関係、およびデータ・ロード、リフレッシュおよび削除の指示を定義します。
構文
code_block ::= [ builtin_schema_statement | template_schema_statement ]
rowsource_specification [column_mapping_assignment]...
[ default_row_specification ]
[ aggregate_specification ]
[ primary_key_specification ]
[ entity_id_specification ]
[ incremental_refresh_directive ]
[ delete_specification ]...行ソース仕様
構文
rowsource_specification ::= ROWSOURCE { table_source | dataset_source | inline_source }
table_source ::= rowsource_expression
rowsource_expression ::= table_reference join_condition... [ row_filtering_conditional ]
join_condition ::= {join_type table_reference ON join_expr | join_type_cross table_reference }
join_type ::= { INNER | LEFT OUTER | RIGHT OUTER | FULL OUTER } JOIN
join_type_cross ::= CROSS JOIN
join_expr ::= boolean_returned_expression
row_filtering_conditional ::= WHERE boolean_returned_expression
dataset_source ::= { UNION | UNION-ALL } table_reference_list
table_reference_list ::= '[ ' table_reference [ , table_reference ]... ' ]'
table_reference ::= table_name | table_alias
inline_source ::= INTABLE '( ' column_and_type inline_value ' )'
column_and_type ::= '[ ' column_name : data_type [, column_name : data_type ]... ' ]'
inline_value ::= VALUES '( ' row_expression [, row_expression ]... ' )'
row_expression ::= '[ ' constant_value [, constant_value ]... ' ]â例: 内部結合
IMPORT SOURCE CUSTOMERS
IMPORT SOURCE COUNTRIES
DEFINE VERSIONED DATASET GAMING_CUSTOMER_REACHED_G
ROWSOURCE CUSTOMERS INNER JOIN COUNTRIES ON (CUSTOMERS.COUNTRY_ID = COUNTRIES.COUNTRY_ID);
THIS = COUNTRIES[COUNTRY_REGION,COUNTRY_SUBREGION];
THIS = CUSTOMERS;
PRIMARYKEY[CUST_ID];
END
設定操作
セット操作は、2つ以上のデータセットを処理し、それらを
ROWSOURCEとして単一の結果セットに結合します。
- 結果の表の構造を定義するには、列マッピングを指定する必要があります。
- デフォルトの主キーがないため、主キーを指定する場合は明示的に指定する必要があります。
例: UNION
IMPORT SOURCE PRODUCTS
DEFINE DATASET PRODUCTS_D FROM PRODUCTS[PROD_ID,PROD_NAME,PROD_EFF_FROM,PROD_EFF_TO,PROD_VALID] END
DEFINE PRIVATE DATASET PC_PRODUCTS_TMP
ROWSOURCE PRODUCTS WHERE
PRODUCTS.PROD_CATEGORY = 'Hardware' AND PRODUCTS.PROD_SUBCATEGORY LIKE '%PCs';
THIS = PRODUCTS[PROD_ID,PROD_NAME,PROD_CATEGORY_DESC,PROD_LIST_PRICE,PROD_MIN_PRICE];
THIS[PRIORITY] = 2;
END
DEFINE PRIVATE DATASET CONSOLE_PRODUCTS_TMP
ROWSOURCE PRODUCTS WHERE PRODUCTS.PROD_SUBCATEGORY_DESC LIKE '%Game%' AND PRODUCTS.PROD_VALID = 'A';
THIS = PRODUCTS[PROD_ID,PROD_NAME,PROD_CATEGORY_DESC,PROD_LIST_PRICE,PROD_MIN_PRICE];
THIS[PRIORITY] = 1;
END
DEFINE DATASET ENTERTAINMENT_PRODUCTS_C
ROWSOURCE UNION[PC_PRODUCTS_TMP,CONSOLE_PRODUCTS_TMP];
THIS = PC_PRODUCTS_TMP;
PRIMARYKEY[PROD_ID];
END
INLINEデータ・セット
インライン表は、その構造とデータの両方(事前定義されたレコード・セットを含む)を表定義内に直接定義します。 インライン表を使用して、外部ソースに依存することなく、小さなデータセットをコードに埋め込みます。
例:
DEFINE INLINE DATASET MYINLINEDATA
ROWSOURCE INTABLE([
PROMO_CATEGORY_ID:VARCHAR2(128),
PROMO_CATEGORY:VARCHAR2(60),
PROMO_DISCOUNT_RATE:BIGDECIMAL(38, 12)]
VALUES
([1 ,'No Promotion',0],
[2 ,'Television',11.5],
[3 ,'Internet', 15.4])
);
PRIMARYKEY[PROMO_CATEGORY_ID];
ENDノート:
VARCHAR2列には、引用符で囲んだり、囲んだりせずに数値を直接挿入できます。