当前位置: 代码迷 >> Oracle管理 >> 请问以下两段代码,单独运行通过,在存储过程里一起运行就报错
  详细解决方案

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

热度:58   发布时间:2016-04-24 05:29:32.0
请教以下两段代码,单独运行通过,在存储过程里一起运行就报错
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);
  相关解决方案