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/MergeUpdate.sqltemplate
2011-11-25 15:56:59 +00:00

62 lines
2.1 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 dbType = "__DBTYPE__";
boolean hasUpdateClause = __USE_UPDATE__;
boolean hasAddtionalUpdateColumns = __SPECIFY_ADDITIONAL_UPDATE_COLUMNS__;
boolean hasUpdateWhereClause = __SPECIFY_UPDATE_WHERE_CLAUSE__;
boolean uFlag = false;
String mergeOnStrUpdate = "";
for(int i=0; i < __MERGE_ON_SRC_COLUMN__.length; i++){
if (uFlag) {
mergeOnStrUpdate += " AND ";
} else {
uFlag = true;
}
mergeOnStrUpdate += (__TARGET_TABLE__ + "." + __MERGE_ON_TRG_COLUMN__[i] + " = " + __SOURCE_TABLE__ + "." + __MERGE_ON_SRC_COLUMN__[i]);
}
String updateStr = "";
String updateWhereStr = "";
uFlag = false;
if (hasUpdateClause) {
for(int i=0; i < __UPDATE_MAPPING_SRC_COLUMN__.length; i++) {
if (uFlag) {
updateStr += ",";
} else {
uFlag = true;
}
updateStr += (__TARGET_TABLE__ + "." + __UPDATE_MAPPING_TRG_COLUMN__[i] + " = " + __SOURCE_TABLE__ + "." + __UPDATE_MAPPING_SRC_COLUMN__[i]);
}
if (hasAddtionalUpdateColumns) {
for(int i=0; i < __ADDITIONAL_UPDATE_COLUMNS_TRG_COLUMN_VALUE__.length; i++) {
if (uFlag) {
updateStr += ",";
} else {
uFlag = true;
}
updateStr += (__TARGET_TABLE__ + "." + __ADDITIONAL_UPDATE_COLUMNS_TRG_COLUMN_NAME__[i] + " = " + __ADDITIONAL_UPDATE_COLUMNS_TRG_COLUMN_VALUE__[i]);
}
}
if (hasUpdateWhereClause) {
updateWhereStr = " " + __UPDATE_WHERE_CLAUSE__ + " ";
}
}
String mergeStringUpdate = "";
if (hasUpdateClause) {
mergeStringUpdate = "UPDATE " + __TARGET_TABLE__ + ", " + __SOURCE_TABLE__ +
" SET " + updateStr + " WHERE (" + mergeOnStrUpdate + ")" + (hasUpdateWhereClause ? (" AND (" + updateWhereStr + ")") : "") + ";";
} else {
mergeStringUpdate = "DELETE FROM " + __TARGET_TABLE__ + " WHERE 1=0";
}
%>
<%=mergeStringUpdate%>;