This repository has been archived on 2025-12-25. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
tcommon-studio-se/org.talend.librariesmanager/resources/java/sqltemplates/Generic/MergeInsert.sqltemplate
2011-11-25 15:56:59 +00:00

74 lines
2.5 KiB
Plaintext

-- This pattern generated a merge statement for Oracle database or equivalent of a merge in other dbs
--(c) 2008 Talend Inc.
<%
EXTRACT(__MERGE_ON__);
EXTRACT(__UPDATE_MAPPING__);
EXTRACT(__ADDITIONAL_UPDATE_COLUMNS__);
EXTRACT(__INSERT_MAPPING__);
EXTRACT(__ADDITIONAL_INSERT_COLUMNS__);
String dbTypeInsert = "__DBTYPE__";
boolean hasInsertClause = __USE_INSERT__;
boolean hasAdditionalInsertColumns = __SPECIFY_ADDITIONAL_INSERT_COLUMNS__;
boolean hasInsertWhereClause = __SPECIFY_INSERT_WHERE_CLAUSE__;
boolean iFlag = false;
String mergeOnStrInsert = "";
for(int i=0; i < __MERGE_ON_SRC_COLUMN__.length; i++){
if (iFlag) {
mergeOnStrInsert += " AND ";
} else {
iFlag = true;
}
mergeOnStrInsert += (__TARGET_TABLE__ + "." + __MERGE_ON_TRG_COLUMN__[i] + " = " + __SOURCE_TABLE__ + "." + __MERGE_ON_SRC_COLUMN__[i]);
}
String insertColumnsStr = "";
String insertValuesStr = "";
String insertWhereStr = "";
String insertStr = "";
iFlag = false;
if (hasInsertClause) {
for(int i=0; i < __INSERT_MAPPING_TRG_COLUMN__.length; i++) {
if (iFlag) {
insertColumnsStr += ",";
insertValuesStr += ",";
} else {
iFlag = true;
}
insertColumnsStr += (__TARGET_TABLE__ + "." + __INSERT_MAPPING_TRG_COLUMN__[i]);
insertValuesStr += (__SOURCE_TABLE__ + "." + __INSERT_MAPPING_SRC_COLUMN__[i]);
}
if (hasAdditionalInsertColumns) {
for(int i=0; i < __ADDITIONAL_INSERT_COLUMNS_TRG_COLUMN_NAME__.length; i++) {
if (iFlag) {
insertColumnsStr += ",";
insertValuesStr += ",";
} else {
iFlag = true;
}
insertColumnsStr += (__TARGET_TABLE__ + "." + __ADDITIONAL_INSERT_COLUMNS_TRG_COLUMN_NAME__[i]);
insertValuesStr += (__SOURCE_TABLE__ + "." + __ADDITIONAL_INSERT_COLUMNS_TRG_COLUMN_VALUE__[i]);
}
}
if (hasInsertWhereClause) {
insertWhereStr = " " + __INSERT_WHERE_CLAUSE__ + " ";
}
insertStr = "(" + insertColumnsStr + ") VALUES (" + insertValuesStr + ")";
}
String mergeStringInsert = "";
if (hasInsertClause) {
mergeStringInsert += "INSERT INTO " + __TARGET_TABLE__ + " (" + insertColumnsStr + ") " +
" (SELECT " + insertValuesStr + " FROM " + __SOURCE_TABLE__ +
" WHERE NOT EXISTS (SELECT 1 FROM " + __TARGET_TABLE__ + " WHERE (" + mergeOnStrInsert + ")) " +
(hasInsertWhereClause ? (" AND (" + insertWhereStr + ")"): "") + ");";
} else {
mergeStringInsert = "DELETE FROM " + __TARGET_TABLE__ + " WHERE 1=0";
}
%>
<%=mergeStringInsert%>;