SELECT SUBSTR(a.TABLE_NAME,0,2) AS "업무구분"
, a.TABLE_NAME AS "테이블명"
, b.COMMENTS AS "테이블한글명"
, a.COLUMN_ID AS "컬럼순번"
, a.COLUMN_NAME AS "컬럼명"
, c.COMMENTS AS "컬럼한글명"
, a.DATA_TYPE AS "타입"
, CASE WHEN NVL(a.DATA_SCALE,0) = 0 THEN TO_CHAR(a.DATA_LENGTH)
ELSE a.DATA_LENGTH||'('||a.DATA_SCALE||')'
END AS "길이"
, CASE WHEN d.COLUMN_NAME IS NOT NULL THEN TO_CHAR(d.KEY_SEQ)
ELSE ''
END AS "KEY"
, CASE WHEN a.nullable = 'N' THEN 'Y'
ELSE ''
END AS "NOT NULL"
, a.DATA_DEFAULT AS "초기값"
FROM ALL_TAB_COLUMNS a
INNER JOIN ALL_TAB_COMMENTS b
ON a.OWNER = b.OWNER
AND a.TABLE_NAME = b.TABLE_NAME
LEFT OUTER JOIN ALL_COL_COMMENTS c
ON a.OWNER = c.OWNER
AND a.TABLE_NAME = c.TABLE_NAME
AND a.COLUMN_NAME = c.COLUMN_NAME
LEFT OUTER JOIN (
SELECT ia.OWNER
, ia.TABLE_NAME
, ib.COLUMN_NAME
, ib.POSITION AS KEY_SEQ
FROM ALL_CONSTRAINTS ia
INNER JOIN ALL_CONS_COLUMNS ib
ON ia.OWNER = ib.OWNER
AND ia.TABLE_NAME = ib.TABLE_NAME
AND ia.CONSTRAINT_NAME = ib.CONSTRAINT_NAME
AND ia.CONSTRAINT_TYPE = 'P'
) d
ON a.OWNER = d.OWNER
AND a.TABLE_NAME = d.TABLE_NAME
AND a.COLUMN_NAME = d.COLUMN_NAME
WHERE a.OWNER = 'SEMA_ERP' /* bx-erp : ERP, semis : SEMA_OWN */
AND a.TABLE_NAME LIKE '%_HIST%' /*조회할 Table명*/
-- AND a.TABLE_NAME = 'AM_CARDCONFMDTALSRECPT' /*조회할 Table명*/
-- AND b.COMMENTS LIKE '%원천징수%' /*조회할 Table명*/
-- AND a.TABLE_NAME = 'AM_SLIP_WRT_M'
-- AND a.COLUMN_NAME LIKE '%ACNUT_NM_DIV_CD%'
-- AND c.COMMENTS LIKE '%통화%코드%'
-- AND a.column_name NOT LIKE '%#_%'ESCAPE'#'
-- ORDER BY a.TABLE_NAME
-- , a.COLUMN_ID
ORDER BY a.TABLE_NAME
, a.COLUMN_ID
-- , a.COLUMN_NAME
;oracle dml 문장 생성 1
WITH tempTbl AS (
SELECT a.COLUMN_ID AS colId
, a.COLUMN_NAME AS colName
, LOWER(SUBSTR(REPLACE(INITCAP(a.COLUMN_NAME),'_'),1,1))||SUBSTR(REPLACE(INITCAP(a.COLUMN_NAME),'_'),2,LENGTH(a.COLUMN_NAME)-1) AS camel
, ('/*'||c.COMMENTS || ','|| a.DATA_TYPE ||'('||a.DATA_LENGTH ||')'||'*/') AS cmt
, ('/*'||c.COMMENTS ||'*/') AS cmt2
, c.COMMENTS AS orgCmt
, a.DATA_TYPE AS dataType
, a.DATA_LENGTH AS dataLen
FROM ALL_TAB_COLUMNS a
LEFT OUTER JOIN ALL_COL_COMMENTS c
ON a.OWNER = c.OWNER
AND a.TABLE_NAME = c.TABLE_NAME
AND a.COLUMN_NAME = c.COLUMN_NAME
WHERE a.OWNER = 'SEMA_ERP'
AND a.TABLE_NAME IN ('AM_CMMN_COSTPT_D') /*조회할 Table명*/
-- AND a.COLUMN_NAME IN ('COMPANY_CODE','BANK_NO_SEQ','BANK_NO','BANK_DIV','CUST_CODE','DEPOSIT_OWNER','USE_YN','DEPT_CODE','APL_STR_DTE'
-- ,'APL_END_DTE','FUND_CHK_YN','FUND_CHK_NOTE','FUND_CHK_YN_B','BANK_RES_CODE','BANK_RES_DESC','INPUT_DATE','INPUT_DUTY_ID'
-- ,'CHG_DATE','CHG_DUTY_ID'
-- )
)
SELECT MAX(aa.ommType) AS ommType
, MAX(aa.colId) AS colId
, aa.ommName
, MAX(aa.ommDescription) AS ommDescription
, MAX(aa.ommLength) AS ommLength
, (MAX(aa.ommType)||' '||aa.ommName||'<length='||MAX(aa.ommLength)||' description="'||MAX(aa.ommDescription)||'">;') AS ommGenStr
, MAX(aa.dmlStr) AS dmlStr
, MAX(aa.dmlStr2) AS dmlStr2
FROM (
SELECT CASE WHEN a.dataType IN ('VARCHAR2') THEN 'String'
WHEN a.dataType IN ('DATE') THEN 'Date'
WHEN a.dataType IN ('NUMBER') AND a.dataLen < 10 THEN 'Integer'
WHEN a.dataType IN ('NUMBER') AND a.dataLen >= 10 THEN 'BigDecimal'
END ommType
, a.camel AS ommName
, a.orgCmt AS ommDescription
, a.dataLen AS ommLength
, a.colId
, (', '||RPAD(a.colName, b.maxLenCol, ' ') ||' AS '||RPAD(a.camel, b.maxLenCmt,' ')||' '||a.cmt) AS dmlStr
, (', '||RPAD(a.colName, b.maxLenCol, ' ') ||' '||a.cmt2) AS dmlStr2
FROM tempTbl a
OUTER APPLY( SELECT MAX(LENGTHB(colName)) AS maxLenCol
, MAX(LENGTHB(camel)) AS maxLenCmt
FROM tempTbl
) b
) aa
GROUP BY aa.ommName
-- ORDER BY aa.ommName
ORDER BY MAX(aa.colId)
-- ORDER BY MAX(aa.ommName)Nexacro transaction시 동적 dataset 지정
this.dsEdcRptsResult = new Dataset(); //기안 상신 결과
this.dsEdcRptsResult.set_name("dsEdcRptsResult");
this.gf_ErpEdcRptsCall = function(pSetting) {
var sIfJobDivCd = pSetting.ifJobDivCd;
var sIfTrkey = pSetting.ifTrkey;
var sAppId = pSetting.appId;
var sEdcFormId = pSetting.edcFormId;
var sEdcTitle = pSetting.edcTitle;
var sEdcContent1 = pSetting.edcContent1;
var sEdcContent2 = this.gf_Nvl(pSetting.edcContent2,"");
var sUserId = this.gf_Nvl(pSetting.userId, this.gf_ErpGetUserInfo().userId);
var sDeptCode = this.gf_Nvl(pSetting.deptCode, this.gf_ErpGetUserInfo().deptCode);
var sSiteCode = this.gf_Nvl(pSetting.siteCode, this.gf_ErpGetUserInfo().siteCode);
var sCompanyCode = this.gf_Nvl(pSetting.companyCode, this.gf_ErpGetUserInfo().companyCode);
var inDs = new Dataset();
inDs.addColumn("ifJobDivCd","string");
inDs.addColumn("ifTrkey","string");
inDs.addColumn("appId","string");
inDs.addColumn("edcFormId","string");
inDs.addColumn("edcTitle","string");
inDs.addColumn("edcContent1","string");
inDs.addColumn("edcContent2","string");
inDs.addColumn("userId","string");
inDs.addColumn("deptCode","string");
inDs.addColumn("siteCode","string");
inDs.addColumn("companyCode","string");
inDs.addRow();
inDs.set_name("inDs");
inDs.setColumn(0,"ifJobDivCd", sIfJobDivCd);
inDs.setColumn(0,"ifTrkey", sIfTrkey);
inDs.setColumn(0,"appId", sAppId);
inDs.setColumn(0,"edcFormId", sEdcFormId);
inDs.setColumn(0,"edcTitle", sEdcTitle);
inDs.setColumn(0,"edcContent1", sEdcContent1);
inDs.setColumn(0,"edcContent2", sEdcContent2);
inDs.setColumn(0,"userId", sUserId);
inDs.setColumn(0,"deptCode", sDeptCode);
inDs.setColumn(0,"siteCode", sSiteCode);
inDs.setColumn(0,"companyCode", sCompanyCode);
var strInDs = "ds_input_" + this.gf_GetRandomKey();
var strOutDs = "ds_ouput_" + this.gf_GetRandomKey();
this.addChild(strInDs, inDs);
this.addChild(strOutDs, this.dsEdcRptsResult);
var sInDataset = "_IN_ROOT_="+strInDs;
var sOutDataset = strOutDs+"=_OUT_ROOT_";
this.gf_ErpTransaction("SSMCMMSVC", "SSMCMMSVC002", sInDataset, sOutDataset, "gf_ErpCallback");
};