CREATE OR REPLACE PROCEDURE deleteimport
AS
    
BEGIN      DECLARE      
CURSOR cur_1 IS  SELECT bar_cust_code,barcode,import_id FROM mkt_bar_import_tmp; 
  DECLARE @bar_cust_code  char ;   /*设备唯一标识*/     
  DECLARE @barcode   char,   /*需要进行维护的日期*/   
  DECLARE @import_id   integer   /*当天日期和维护日期的比较值*/ 
OPEN cur_1 ; 
 loop
   fetch next from cur_1  INTO @bar_cust_code,@barcode,@import_id 
   while (@@FETCH_STATUS =0) 
   begin 
     delete mkt_bar_import  where bar_cust_code=@bar_cust_code  and barcode=@barcode and import_id<>@import_id;
     commit;  
    fetch next from cur_1  INTO @bar_cust_code,@barcode,@import_id
    end END deleteimport;declare 
begin 
gn.deleteimport;--这里也可调用 
end; 

解决方案 »

  1.   

    你的存储过程貌似是SQL SERVER的语法
      

  2.   

    把你的DECLARE的那部分放在begin的上面去,游标的定义在所有的定义的最前方
    手边没有环境,编译的错误你自己找吧,你的sql语句写的也不对
      

  3.   


    sqlserver里的存储过程
    建议到sqlserver大版里发帖子
      

  4.   


    看创建头,是oracle的写法,但是看声明游标的方式以及使用,却是sqlserver的方式,但是调用的时候,又是oracle的方式!敢问楼主,你是否是需要将中间的sqlserver脚本换成oracle的方式呢?
      

  5.   

    明显是SQLserver的语法,楼主想干吗?
      

  6.   

    是的,想做什么呀?sqlServer 的语法。
      

  7.   

    CSDN
    可悲之:
    发帖没人回
    回帖没人应