Dear Y'all - I <[EMAIL PROTECTED]> writes:
> My question is does DBI or the Oracle DBD provide any mechanism to > extract the names of all the source tables from the SQL text that > generates the view. With your help I found the answer; as follows: ------------------------------------------------------------ #!/usr/bin/perl use strict; use Data::Dumper; use SQL::Parser; my $sql_cmd = "SELECT EMPLID , EFFDT ,'A' , PER_TYPE , MAR_STATUS , MAR_STATUS_DT , SEX , AGE_STATUS , HIGHEST_EDUC_LVL , FT_STUDENT , LANG_CD , YEARS_OF_EXP , APPLID , APP_DT , ALTER_EMPLID , BILINGUALISM_CODE , HEALTH_CARE_NBR , HEALTH_CARE_STATE , GUARDIAN_CHE , MILIT_SITUATN_ESP , SOC_SEC_AFF_DT , GVT_CRED_MIL_SVCE , GVT_MILITARY_COMP , GVT_MIL_GRADE , GVT_MIL_RESRVE_CAT , GVT_MIL_SEP_RET , GVT_MIL_SVCE_END, GVT_MIL_SVCE_START , GVT_MIL_VERIFY , GVT_PAR_NBR_LAST , GVT_UNIF_SVC_CTR , GVT_VET_PREF_APPT , GVT_VET_PREF_RIF , GVT_CHANGE_FLAG , GVT_DRAFT_STATUS , GVT_YR_ATTAINED , DISABLED_VET , DISABLED , ETHNIC_GROUP , GVT_DISABILITY_CD , GRADE , SAL_ADMIN_PLAN , GVT_CURR_AGCY_EMPL , GVT_CURR_FED_EMPL , GVT_HIGH_PAY_PLAN , GVT_HIGH_GRADE , GVT_PREV_AGCY_EMPL , GVT_PREV_FED_EMPL , GVT_SEP_INCENTIVE , GVT_SEP_INCENT_DT , GVT_TENURE , GVT_PAY_PLAN , BARG_UNIT , ENTRY_DT_FRA , MILIT_SITUATN_FRA , CPAMID , MILITARY_STAT_GER , EXPCTD_MILITARY_DT , HR_RESPONSIBLE_ID, MILITARY_STAT_! ITA , MILITARY_TYPE_ITA , MILITARY_RANK_ITA , MILITARY_END_ITA , HONSEKI_JPN , US_WORK_ELIGIBILTY , MILITARY_STATUS , CITIZEN_PROOF1 , CITIZEN_PROOF2 , SMOKER , MEDICARE_ENTLD_DT , SMOKER_DT , FP_ACTION_2 , ACTION_REASON , FP_ACTION_REQ , FP_SUPDOC_REQ , LAST_UPDATE_DATE , LOAD_DTTM , LASTUPDDTTM , ERROR_FLAG FROM PS_PERS_DATA_EFFDT PDE WHERE PDE.EFFDT = ( SELECT MAX(B.EFFDT) FROMPS_PERS_DATA_EFFDT B WHERE B.EMPLID = PDE.EMPLID AND ( B.EFFDT <= TO_DATE(TO_CHAR(SYSDATE,'YYYY-MM-DD'),'YYYY-MM-DD') OR (B.EFFDT > TO_DATE(TO_CHAR(SYSDATE,'YYYY-MM-DD'),'YYYY-MM-DD') AND TO_DATE(TO_CHAR(SYSDATE,'YYYY-MM-DD'),'YYYY-MM-DD')< ( SELECT MIN(C.EFFDT) FROM PS_PERS_DATA_EFFDT C WHERE C.EMPLID = B.EMPLID) ) ) )"; my $parser = SQL::Parser->new( 'AnyData'); $parser->parse($sql_cmd); use Data::Dumper; print Dumper $parser->structure; ----------------------------------------------------------------- Note especially: 'table_names' => [ 'PS_PERS_DATA_EFFDT' ], Yours - Billy ============================================================ William Goedicke [EMAIL PROTECTED] http://www.goedsole.com:8080 ============================================================ Lest we forget: It's a god-ridden country. - Victor Goedicke _______________________________________________ Boston-pm mailing list [EMAIL PROTECTED] http://mail.pm.org/mailman/listinfo/boston-pm