execute dbms_utility.exec_ddl_statement('alter user scott default tablespace temp1');

本文介绍了一条PL/SQL命令,用于更改SCOTT用户的默认表空间为TEMP1。此操作常见于Oracle数据库管理中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

execute dbms_utility.exec_ddl_statement('alter user scott default tablespace temp1');
我的存储过程为”CREATE OR REPLACE PROCEDURE ZB_DWD.P_DWD_D_USE_BASE_INFO( V_DATE IN VARCHAR2, V_AREA IN VARCHAR2, V_RETCODE OUT VARCHAR2, V_RETINFO OUT VARCHAR2) AUTHID CURRENT_USER AS /*@ **************************************************************** *名称 --%@NAME: P_DWD_D_USE_BASE_INFO *功能描述 --%@COMMENT:用户基础信息(维度关联) *执行周期 --%@PERIOD:日 *参数 --%@PARAM:V_DATE 日期,格式YYYYMM *参数 --%@PARAM:V_RETCODE 过程运行结束成功与否标志 *参数 --%@PARAM:V_RETINFO 过程运行结束成功与否描述 *创建人 --%@CREATOR: liston *创建时间 --%@CREATED_TIME:2021-11-19 *备注 --%@REMARK: *修改记录 --%@MODIFY: *来源表 --%@FROM: *目标表 --%@TO: *修改记录 --%@MODIFY: ****************************************************************** @*/ V_PKG VARCHAR2(30); V_TAB VARCHAR2(300); V_PROCNAME VARCHAR2(300); V_ROWLINE NUMBER; V_COUNT NUMBER; V_SQL CLOB; V_LOG_SN NUMBER; V_DATE_A1 VARCHAR2(8); BEGIN V_PKG := 'DWD_D_USE_BASE_INFO'; -- 分类名称 V_TAB := 'DWD_D_USE_BASE_INFO'; -- 表名 V_PROCNAME := 'P_DWD_D_USE_BASE_INFO'; -- 过程名称 V_DATE_A1 :=TO_CHAR(TO_DATE(V_DATE,'YYYYMMDD')+1,'YYYYMMDD'); SELECT ZB_ODS.SEQ_ODS_SQLPARSER.NEXTVAL INTO V_LOG_SN --运行日志序号 FROM DUAL; -- 日志部分 ZB_ODS.P_INSERT_SQLPARSER_LOG_GENERAL( V_LOG_SN, V_DATE, V_AREA, 'ZB_DWD', V_PROCNAME, 'V_DATE='|| V_DATE ||';V_PROV='|| V_AREA, SYSDATE, V_TAB); ZB_ODS.P_INSERT_LOG( V_DATE, V_PKG, V_PROCNAME, V_AREA, SYSDATE, V_TAB); -- 条件判断1 目标分区是否存在 EXECUTE IMMEDIATE ' SELECT count(1) FROM ALL_TAB_SUBPARTITIONS WHERE table_name = ''DWD_D_USE_BASE_INFO'' AND table_owner = ''ZB_DWD'' AND partition_name = ''PART_'||V_DATE||'''' INTO V_COUNT; IF V_COUNT != 11 THEN V_SQL := 'ALTER TABLE ZB_DWD.DWD_D_USE_BASE_INFO ADD PARTITION PART_'||V_DATE||' VALUES LESS THAN ('''||V_DATE_A1||''') TABLESPACE TBS_ZB_DWD ( subpartition PART_'||V_DATE||'_SUBPART_01 values (''01'') tablespace TBS_ZB_DWD, subpartition PART_'||V_DATE||'_SUBPART_02 values (''02'') tablespace TBS_ZB_DWD, subpartition PART_'||V_DATE||'_SUBPART_03 values (''03'') tablespace TBS_ZB_DWD, subpartition PART_'||V_DATE||'_SUBPART_04 values (''04'') tablespace TBS_ZB_DWD, subpartition PART_'||V_DATE||'_SUBPART_05 values (''05'') tablespace TBS_ZB_DWD, subpartition PART_'||V_DATE||'_SUBPART_06 values (''06'') tablespace TBS_ZB_DWD, subpartition PART_'||V_DATE||'_SUBPART_07 values (''07'') tablespace TBS_ZB_DWD, subpartition PART_'||V_DATE||'_SUBPART_08 values (''08'') tablespace TBS_ZB_DWD, subpartition PART_'||V_DATE||'_SUBPART_09 values (''09'') tablespace TBS_ZB_DWD, subpartition PART_'||V_DATE||'_SUBPART_10 values (''10'') tablespace TBS_ZB_DWD, subpartition PART_'||V_DATE||'_SUBPART_11 values (''11'') tablespace TBS_ZB_DWD ) '; EXECUTE IMMEDIATE V_SQL; END IF; -- 条件判断2 - 源数据是否存在 EXECUTE IMMEDIATE ' SELECT SUM(CNT) FROM ( SELECT count(1) CNT FROM ZB_ODS.ODS_D_USE_BASE_INFO WHERE date_id ='''|| V_DATE ||''' AND area_id ='''|| V_AREA ||''' AND rownum < 2 union all SELECT count(1) FROM ZB_DIM.DIM_AREA_ID WHERE rownum < 2 union all SELECT count(1) FROM ZB_DIM.DIM_SERVICE_TYPE WHERE rownum < 2 ) ' into V_COUNT; IF V_COUNT = 3 THEN --ddl语句必须使用动态sql V_SQL := 'ALTER TABLE ZB_DWD.DWD_D_USE_BASE_INFO TRUNCATE SUBPARTITION PART_'|| V_DATE ||'_SUBPART_'|| V_AREA ; --dml语句可以不使用动态sql 但是前面ddl使用了动态 尽量相同 EXECUTE IMMEDIATE V_SQL; V_SQL := 'INSERT INTO ZB_DWD.DWD_D_USE_BASE_INFO NOLOGGING SELECT T0.DATE_ID, T0.AREA_ID, DECODE(T0.AREA_ID,''02'',''晋中市'',''06'',''吕梁市'',''08'','''''',T1.AREA_DESC), T0.USER_ID, T0.DEVICE_NUMBER, T0.SERVICE_TYPE, T2.SERVICE_TYPE_DESC, T0.INNET_DATE, T0.INNET_MONTHS FROM ZB_ODS.ODS_D_USE_BASE_INFO T0, ZB_DIM.DIM_AREA_ID T1, ZB_DIM.DIM_SERVICE_TYPE T2 --左关联 WHERE T0.AREA_ID=T1.AREA_ID(+) --t0和t1左关联 AND T0.SERVICE_TYPE= T2.SERVICE_TYPE(+) --t0和t2左关联 AND T0.DATE_ID='''|| V_DATE ||''' AND T0.AREA_ID='''|| V_AREA ||''''; EXECUTE IMMEDIATE V_SQL; V_ROWLINE := SQL%ROWCOUNT; COMMIT; V_RETCODE := 'SUCCESS'; V_RETINFO := '结束'; ELSE V_RETCODE := 'WAIT'; V_RETINFO := '等待数据'; END IF; -- 更新执行结果 ZB_ODS.P_UPDATE_LOG( V_DATE, V_PKG, V_PROCNAME, V_AREA, V_RETINFO, V_RETCODE, SYSDATE, V_ROWLINE); ZB_ODS.P_UPDATE_SQLPARSER_LOG_GENERAL( V_LOG_SN, V_RETCODE, V_RETINFO); EXCEPTION WHEN OTHERS THEN V_RETCODE := 'FAIL'; V_RETINFO := SQLERRM; ZB_ODS.P_UPDATE_LOG( V_DATE, V_PKG, V_PROCNAME, V_AREA, V_RETINFO, V_RETCODE, SYSDATE, V_ROWLINE); ZB_ODS.P_UPDATE_SQLPARSER_LOG_GENERAL( V_LOG_SN, V_RETCODE, V_RETINFO); END; “他的状态为valid 之后我运行了循环调用”DECLARE V_DATE VARCHAR2(8) := '20200818'; V_1 VARCHAR2(1000); V_2 VARCHAR2(1000); BEGIN WHILE to_date(V_DATE,'yyyymmdd') BETWEEN to_date('20230515','yyyymmdd') - 1000 AND to_date('20230515','yyyymmdd') - 991 LOOP FOR T IN (SELECT AREA_ID FROM ZB_DIM.DIM_AREA_ID) LOOP ZB_DWD.P_DWD_D_USE_BASE_INFO(V_DATE, T.AREA_ID, V_1, V_2); END LOOP; V_DATE := to_char(to_date(V_DATE,'yyyymmdd') + 1,'yyyymmdd'); END LOOP; END;"但是“SELECT DATE_ID,area_id,COUNT(*) FROM ZB_DWD.DWD_D_USE_BASE_INFO GROUP BY DATE_ID,area_id;”的表中没有数据查看日志“SELECT * FROM ZB_ODS.ODS_EXECUTE_LOG WHERE acct_month='20200818' ;”显示ORA-00907: 缺失右括号
最新发布
07-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值