读书人

请问以下两段代码单独运行通过在存

发布时间: 2012-04-04 16:38:51 作者: rapoo

请教以下两段代码,单独运行通过,在存储过程里一起运行就报错

SQL code
/************************************************************/        /* 删除表 OCN_RESULT_XH的索引                               */        /************************************************************/        declare             v_IndexName user_indexes.index_name%type;            v_TableName user_indexes.table_name%type;            v_SQL varchar(2000);            cursor OCN_Cursor is             select Table_Name,                   Index_name            from user_indexes             where Table_Name='OCN_RESULT_XH'                  and Uniqueness<>'UNIQUE';        Begin            open OCN_Cursor;            if OCN_Cursor%isopen            then                  loop                     fetch OCN_Cursor into v_TableName,v_IndexName;                     exit when OCN_Cursor%notfound;                     v_SQL:='drop index '||v_indexName;                     execute immediate v_SQL;                 end loop;             else                   dbms_output.put_line('no Date!');             end if;             close OCN_Cursor;        End;                /************************************************************/        /* 得到TEMP_TFI_Cust_XH表的数据                             */        /************************************************************/        insert into TEMP_TFI_Cust_XH(CATV_SID,CUST_SID,CustomerID,Status,DT_CREATE)        select              A.CATV_SID,              A.CUST_SID,              A.CustomerID,              A.Status,              A.DT_CREATE        from edw.TFI_Cust_XH@LINK_DCSERVER A        where trunc(A.DT_CREATE)<Trunc(sysdate);/*报错内容:ORA-06550: 第 32 行, 第 9 列: PLS-00103: 出现符号 "INSERT"  */实在没有分了,对不住大家了




[解决办法]
/************************************************************/
/* 得到TEMP_TFI_Cust_XH表的数据 */
/************************************************************/
insert into TEMP_TFI_Cust_XH(CATV_SID,CUST_SID,CustomerID,Status,DT_CREATE)
select
A.CATV_SID,
A.CUST_SID,
A.CustomerID,
A.Status,
A.DT_CREATE
from edw.TFI_Cust_XH@LINK_DCSERVER A
where trunc(A.DT_CREATE)<Trunc(sysdate);

加在END;的前面试试
[解决办法]
declare
v_IndexName user_indexes.index_name%type;
v_TableName user_indexes.table_name%type;
v_SQL varchar(2000);
cursor OCN_Cursor is
select Table_Name,
Index_name
from user_indexes
where Table_Name='OCN_RESULT_XH'
and Uniqueness<>'UNIQUE';
Begin
Begin
....
End;
/************************************************************/
/* 得到TEMP_TFI_Cust_XH表的数据 */
/************************************************************/
insert into TEMP_TFI_Cust_XH(CATV_SID,CUST_SID,CustomerID,Status,DT_CREATE)
select
A.CATV_SID,
A.CUST_SID,
A.CustomerID,
A.Status,
A.DT_CREATE
from edw.TFI_Cust_XH@LINK_DCSERVER A
where trunc(A.DT_CREATE)<Trunc(sysdate);
End;

在begin 前面 加个 begin
最后 加个 end 试下
[解决办法]
存储过程中的代码必须放到begin和end之间啊。
把下面的代码移到end之前:
SQL code
/************************************************************/        /* 得到TEMP_TFI_Cust_XH表的数据                             */        /************************************************************/        insert into TEMP_TFI_Cust_XH(CATV_SID,CUST_SID,CustomerID,Status,DT_CREATE)        select              A.CATV_SID,              A.CUST_SID,              A.CustomerID,              A.Status,              A.DT_CREATE        from edw.TFI_Cust_XH@LINK_DCSERVER A        where trunc(A.DT_CREATE)<Trunc(sysdate); 


[解决办法]
存储过程结尾是END 过程名。你存储过程的格式都错咯!肯定报错了!

读书人网 >oracle

热点推荐