pl sql存储过程-为后台执行加载数据 可以加载到临时表 却不能加载到表区间(调用存储过程)

问题描述

为后台执行加载数据 可以加载到临时表 却不能加载到表区间(调用存储过程)
CREATE OR REPLACE PROCEDURE PRC_DET_01026_DAY
(

IN_DAY IN NUMBER --统计日期yyyymmdd
ON_RtnCode OUT NUMBER --返回值,正确为0,错误为ORACLE的错误代码
ON_RtnMsg OUT VARCHAR2 --返回信息,正确为'NO ERROR'否则为ORACLE的出错信息

)

AS

-----程序固定变量,不要修改---------------------------
vn_RtnCode NUMBER(8) :=0; --程序返回代码,正确为0,错误为ORACLE的错误代码
vv_RtnMsg VARCHAR2(600) := 'NO ERROR'; --程序返回信息,正确为'NO ERROR'否则为ORACLE的出错信息
vd_BegDate DATE := SYSDATE; --程序起始时间
vd_EndDate DATE; --程序结束时间
vn_Step NUMBER(4) := 0; --运行步骤(如果程序较长,可以根据实际情况对此变量做增量,出错时根据此变量当前值比较容易分析,运行到最后赋值为-1,标识正常退出)
vn_batchid NUMBER; --处理批次号
vn_mdutype NUMBER := 100; --模块类型,100: 数据库存储过程
vn_statdate NUMBER(8); --处理日期参数
vn_statcity NUMBER(8); --处理地市参数
vv_statother VARCHAR2(600); --其它参数信息
vn_ninfo NUMBER(10); --其它返回数字信息
vv_vinfo VARCHAR2(800); --其它返回字符信息
vv_PrcName VARCHAR2(30) := UPPER('PRC_DET_01026_DAY'); --存储过程名称

vn_partflag NUMBER(1); --分区标志

var_day NUMBER(2); --日期参数
var_partno VARCHAR2(10); --分区参数
var_delpartno VARCHAR2(10); --需要删除的分区参数
var_addpartno VARCHAR2(10); --需要新增的分区参数
var_month NUMBER(2); --月份参数
var_delday VARCHAR2(6); --需要删除分区日期
var_count NUMBER(5); --计数器
var_tdate NUMBER(6); --动态表参数
var_info VARCHAR2(1000); --错误信息

BEGIN

vn_Step:=1;
--******此部分根据需要修改,如果没有值,则赋值为NULL;******---

vn_statdate := IN_DAY; --获取处理日期参数
vv_statother := NULL; --获取其它参数信息
--********************************************************---

var_tdate:=SUBSTR(IN_DAY16); --截取动态表参数
var_partno := 'P'||IN_DAY; --计算表分区参数
--var_delday := TO_CHAR(ADD_MONTHS( TO_DATE(IN_DAY'YYYYMMDD') -12 )'YYYYMM'); --计算12个月以前的时间
var_delday := TO_CHAR(TO_DATE(IN_DAY'YYYYMMDD') - 2'YYYYMMDD'); --计算2以前的时间
var_delpartno := 'P'||var_delday; --计算需要添加的分区参数
var_count:=0; --初始化计数器

vn_Step:=2;

FOR CUR_P
IN
(SELECT PARTITION_NAME
FROM ALL_TAB_PARTITIONS
WHERE TABLE_NAME='RELATION_USER'
AND PARTITION_NAME LIKE '%'||var_delday||'%')
LOOP
EXECUTE IMMEDIATE 'ALTER TABLE RELATION_USER DROP PARTITION '||CUR_P.PARTITION_NAME;
END LOOP;

vn_Step:=3;

SELECT COUNT(*)
INTO vn_partflag
FROM ALL_TAB_PARTITIONS
WHERE TABLE_NAME='RELATION_USER'
AND PARTITION_NAME=var_partno;

IF vn_partflag=0 THEN
EXECUTE IMMEDIATE 'ALTER TABLE RELATION_USER ADD PARTITION '||var_partno||' VALUES( '||IN_DAY||' ) TABLESPACE TBS_TOTAL';
ELSE
EXECUTE IMMEDIATE 'ALTER TABLE RELATION_USER TRUNCATE PARTITION '||var_partno;
END IF;

vn_Step:=4;

INSERT INTO RELATION_USER
SELECT IN_DAYa.*
FROM TMP_01026 a
;

COMMIT;

---*************************************---

--******此部分根据需要修改,如果没有值,则赋值为NULL;******---
--******如:如果没有地市参数,则vn_statcity := NULL; ******---
vn_ninfo := NULL; --获取其它返回数字信息
vv_vinfo := NULL; --获取其它返回字符信息
--********************************************************---

vn_Step := -1; --赋值为负1,标识正常退出

--返回信息设置

--程序结束时间
vd_EndDate := SYSDATE;

EXCEPTION
WHEN OTHERS THEN

vn_RtnCode := SQLCODE;vv_RtnMsg := SUBSTR(SQLERRM 1 600);ROLLBACK;ON_RtnCode := vn_RtnCode;ON_RtnMsg := vv_RtnMsg;vd_EndDate := SYSDATE;DBMS_OUTPUT.PUT_LINE( 'INDEX: '||vn_Step||' ERR_CODE: '||vv_RtnMsg );

END;
求大神帮忙看下问题出在哪?为什么不能自动调用存储过程

时间: 2024-09-16 11:41:11

pl sql存储过程-为后台执行加载数据 可以加载到临时表 却不能加载到表区间(调用存储过程)的相关文章

Sql Server中如何执行多条语句并返回Select查询后的临时表

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= CREATE FUNCTION csj_csj(@id as int) RETURNS @temp table --这里返回一个自己创建的表,里面的字段根据自己的需要设 ( [id] int, [zd] varchar(100), [xl] varchar(100) ) AS BEGIN insert

pl/sql develop 件中oracle形式导出数据

问题描述 pl/sqldevelop件中oracle形式导出数据的可执行文件放在哪里呢?如果找不到该怎么办呢?

(转)关于PL/SQL Developer中对存储过程add debug information

关于PL/SQL Developer中对存储过程add debug information  http://space.itpub.net/13129975/viewspace-626245 如果使用PL/SQL Developer中选择一个存储过程debug但又debug不进去! 解决这个问题是很简单的,只需要在PL/SQL Developer中选择要debug的存储过程,然后点右键,在弹出的菜单中选择"Add debug information"后再重新开一个窗口开始debug就能

设置PL/SQL Developer的方法

PL/SQL Beautifier(PL/SQL 美化器) PLD 6以上版本有对DML代码格式化的功能.在SQL Window或Program Window中选中部分代码(如果 不选则对整个窗口的代码操作),在菜单中选Edit -> PL/SQL Beautifier,得到格式化的代码. 对于非法的DML语句或DDL语句,PLD将会在下方状态栏提示PL/SQL Beautifier could not parse text .在缺省的状态下,PLD会把DML语句的每一个字段都排在单独的一行,这

PL/SQL dev使用指南

1.PLSQL DEV 与oracle instant client 连接配置: Oracle Instant client 是oracle提供的简便客户端, 支持多种平台. 包括如下内容: Instant client Package - Basic 运行OCI, OCCI, 和JDBC-OCI应用程序需要的所有文件. Instant client Package - Basic Lite: 只包含英语错误信息, 只支持unicode, ascii, 西欧字符集. Instant client

PL/SQL DEVELOPER 使用的一些技巧_MsSql

1,登录后默认自动选中My Objects 默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登录的用户是dba,要展开tables目录,正常情况都需要Wait几秒钟,而选择My Objects后响应速率则是以毫秒计算的. Tools菜单 --> Object Brower Filters,会打开Brower Folders的定单窗口,把"My Objects"设为默认即可. Tools菜单--> Object Brower

PL/SQL专家指南2——PL/SQL精髓

1.入门级概述 用PL/SQL很久了,很多其他搞IT的人问我PL/SQL是什么,一般我的回答是:1,Oracle的开发语言.2,比SQL复杂了些,多了很多东西(至于什么东西,现在还搞不清楚,还幼稚的以为:PL/SQL=PLus SQL),今天仔细潜心读了些书终于完善了这个定义(不是偷懒复制的,是手抄的): Procedure Language/SQL(PL/SQL) is Oracle Corporation's procedure language extension to SQL, the

PL/SQL DEVELOPER 使用的一些技巧

1,登录后默认自动选中My Objects 默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登录的用户是dba,要展开tables目录,正常情况都需要Wait几秒钟,而选择My Objects后响应速率则是以毫秒计算的. Tools菜单 --> Object Brower Filters,会打开Brower Folders的定单窗口,把"My Objects"设为默认即可. Tools菜单--> Object Brower

PL/SQL的使用技巧

1.PL/SQL Developer记住登陆密码 在使用PL/SQL Developer时,为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码: 设置方法:PL/SQL Developer 7.1.2  ->tools->Preferences->Oracle->Logon History , "Store history"是默认勾选的,勾上"Store with password" 即可,重新登录在输入一次密