日期:2014-05-17  浏览次数:20746 次

请教以下两段代码,单独运行通过,在存储过程里一起运行就报错
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之前: