接上@M_RETURNID      SMALLINT,
@M_IOFLAG        SMALLINT, 
@M_TAXRATE        REAL
DECLARE @M_DATE          SMALLDATETIME
DECLARE @M_GOODSNO      CHAR (14), 
@M_GOODSUNIT    CHAR (8) ,
@M_INVOICENO    CHAR (10),
@M_STORELOC     CHAR (12),
@M_PCH          CHAR (50),
@M_OWNPROOFNO   CHAR (10), 
@M_SALEPROOFNO  CHAR (10), 
@M_IOSTAFF      CHAR (14),
@M_DEPARTMENT   CHAR (12),
@M_REMARK       CHAR (40),
@M_CLIENTNO     CHAR (14), 
@M_PAYFLAG        CHAR    (1),   
@M_SALEPAYNO     VARCHAR (10),
@M_PAYSUBJECTNO  VARCHAR (15),
@M_BACKSUBJECTNO VARCHAR (15)
SET @M_PAYFLAG ='P' 
IF  ( @M_TOTALPAYMONEY = 0)   SET @M_PAYFLAG ='O' 
SET @M_PAYDATE =@M_DATE
SET    @M_IOSTYLE = '购进退回'
SET    @M_DATE    = GETDATE()
SELECT @M_OWNPROOFNO    = MD_OWNPROOFNO,    @M_SALEPROOFNO = MD_BUYPROOFNO, @M_INVOICENO = MD_INVOICENO, @M_CLIENTNO = MD_CLIENTNO,     @M_TOTALSALEMONEY = MD_TOTALBUYMONEY,   @M_TAXRATE =MD_TAXRADIO,
@M_TOTALTAXMONEY = MD_TOTALTAXMONEY, @M_REMARK = MD_REMARK,       @M_TOTALMONEY = MD_TOTALMONEY ,@M_IOSTAFF = MD_BACKSTAFF  , @M_DEPARTMENT = MD_DEPARTMENT, @M_DATE =MD_BackDate
FROM BUYBACKS  WHERE MD_BUYBACKNO = @M_PROOFNO ;
IF (@@ROWCOUNT = 0)   RETURN (-1) 
UPDATE BUYBACKS  
SET MD_CHECKFLAG = 'Y' ,MD_CHECKMAN = @M_CHECKSTAFF  
WHERE MD_BUYBACKNO =@M_PROOFNO ;
IF (@@ROWCOUNT = 0 )   RETURN (-1)  
INSERT INTO SYSCOURSE(MD_PROOFNO ,MD_EVIDENCENO,MD_REMARK      ,MD_IOSTAFF      ,MD_STAFF  ,MD_BACKFLAG ,   MD_ASSIGNPROOFNO,
MD_CLIENTNO,MD_STYLE     ,MD_USERACCENTNO,MD_CLITREMAINDER,MD_MONEY  ,MD_PROFIT   ,   MD_STORELOC  ,MD_GETMONEY)
VALUES(@M_PROOFNO ,'PZ00000'    ,@M_REMARK      ,@M_IOSTAFF    ,  @M_CHECKSTAFF  , 0          ,     ' ' ,
@M_CLIENTNO, @M_IOSTYLE  ,'PZ00000'      ,0,               @M_TOTALMONEY ,@M_TOTALPROFIT ,''  , @M_TOTALPAYMONEY)
IF (@@ROWCOUNT < 1)    RETURN (-1) 
INSERT INTO STOREIOS(MD_STOREIONO, MD_OWNPROOFNO, MD_DATE      ,MD_IOSTYLE ,  MD_STORELOC,  MD_TOTALMONEY,      MD_STAFF,    
MD_IOSTAFF,   MD_DEPARTMENT, MD_REMARK,    MD_CLIENTNO,  MD_CHECKFLAG, MD_TOTALCHECKMONEY, MD_CHECKMAN )  
VALUES (@M_PROOFNO,   NULL         , @M_DATE     , @M_IOSTYLE ,  @M_STORELOC , @M_TOTALMONEY,      @M_CHECKSTAFF,
@M_IOSTAFF,   @M_DEPARTMENT, @M_REMARK   , @M_CLIENTNO,  'Y'        ,  0            ,      NULL) 
IF (@@ROWCOUNT = 0)   RETURN (-1)  
IF (@M_PAYFLAG ='O' )  
BEGIN
UPDATE CLITACNT  
SET MD_BUYOWEMONEY = MD_BUYOWEMONEY - @M_TOTALMONEY ,  MD_BUYBACKTIMES =MD_BUYBACKTIMES + 1 ,MD_BUYBACKMONEY = MD_BUYBACKMONEY + @M_TOTALMONEY 
WHERE MD_CLIENTNO = @M_CLIENTNO   
INSERT INTO SALEOWE  
( MD_SALEPROOFNO,MD_INVOICENO,     MD_CLIENTNO, MD_SALEDATE, MD_PAYSTYLE, MD_RECEIVEDATE, MD_SALESTAFF,      
MD_DEPARTMENT, MD_TOTALSALEMONEY,MD_FLAG,     MD_TAXRATE,  MD_TAXMONEY, MD_STAFF,       MD_PREMONEY )  
VALUES( @M_PROOFNO, @M_INVOICENO,     @M_CLIENTNO, @M_DATE,  @M_PAYSTYLE, @M_DATE, @M_IOSTAFF,              
@M_DEPARTMENT, @M_TOTALMONEY*(-1),    -1,          @M_TAXRATE,  @M_TOTALTAXMONEY*(-1), @M_CHECKSTAFF,       0 )  
IF (@@ROWCOUNT <1) RETURN (-1)
END
ELSE
BEGIN
UPDATE CLITACNT  
SET MD_BUYPAYMONEY = MD_BUYPAYMONEY - @M_TOTALMONEY,  MD_BUYBACKTIMES =MD_BUYBACKTIMES + 1 ,MD_BUYMONEY = MD_BUYMONEY - @M_TOTALMONEY 
WHERE MD_CLIENTNO = @M_CLIENTNO   
EXEC    @M_RETURNID = MSP_GETID 'BUYPAYS' ,@M_SALEPAYNO OUTPUT 
IF (@M_RETURNID < 0) BEGIN
RETURN (-1)
END 
INSERT INTO SALEPAYS  
( MD_SALEPAYNO, MD_OWNPROOFNO, MD_PAYDATE,    MD_CLIENTNO,  MD_PAYSTYLE,   MD_CHECKPROOFNO,  MD_PAYSUBJECTNO,  MD_PAYMONEY,   MD_TOTALGETMONEY,MD_CHECKFLAG,   
MD_STAFF,     MD_PAYSTAFF,   MD_DEPARTMENT, MD_REMARK,    MD_BACKUPFLAG, MD_TOTALMONEY,    MD_BACKSUBJECTNO, MD_BACKMONEY,  MD_CHECKMAN ) 
VALUES( @M_SALEPAYNO, @M_OWNPROOFNO, @M_DATE,    @M_CLIENTNO,  @M_PAYSTYLE,    @M_CHECKPROOFNO,  @M_PAYSUBJECTNO,  @M_TOTALMONEY *(-1),  @M_TOTALMONEY *(-1),   'Y',
@M_CHECKSTAFF,     @M_IOSTAFF, @M_DEPARTMENT, @M_REMARK,    0,             @M_TOTALMONEY*(-1),    @M_BACKSUBJECTNO,  @M_TOTALMONEY*(-1),  '' )  
IF (@@ROWCOUNT <1) RETURN (-1)
END 
IF (@M_PAYFLAG ='P' )  BEGIN
EXEC   MSP_PUTID 'BUYPAYS'
END
DECLARE  MY_CURS CURSOR FOR 
SELECT MD_INDEX, MD_STORELOC,MD_GOODSNO,  MD_GOODSPROOFNO, MD_GOODSUNIT, MD_QUANTITY, MD_PRICE,  MD_MONEY,    MD_TAX,MD_CHANGERATE
FROM BUYBACKM    WHERE MD_BUYBACKNO = @M_PROOFNO  ;
OPEN MY_CURS
FETCH MY_CURS INTO @M_INDEX, @M_STORELOC,@M_GOODSNO,  @M_PCH     ,     @M_GOODSUNIT, @M_QUANTITY, @M_PRICE , @M_MONEY,    @M_TAXMONEY,@M_CHANGERATE
WHILE (@@FETCH_STATUS = 0) 
BEGIN  
INSERT INTO SALEBUY ( MD_STORELOC,  MD_GOODSNO,   MD_GOODSPROOFNO,MD_IOSTYLE,  MD_PROOFNO,     MD_QUANTITY,  MD_MONEY,     MD_PROFIT,   MD_IOFLAG,  MD_IOSTAFF,   
MD_STAFF,     MD_CLIENTNO,  MD_PROOFINDEX,  MD_TAXMONEY, MD_NOTAXMONEY  ,MD_DATE )  
VALUES ( @M_STORELOC,  @M_GOODSNO,   @M_PCH         ,@M_IOSTYLE,  @M_PROOFNO,   @M_QUANTITY,  @M_MONEY,     @M_PROFIT,   @M_IOFLAG,  @M_IOSTAFF,   
@M_CHECKSTAFF,     @M_CLIENTNO,  @M_INDEX,       @M_TAXMONEY, @M_SALEMONEY  ,@M_DATE )  
IF (@@ROWCOUNT < 1 ) GOTO ERRORRET
SELECT @M_STOREPRICE = MD_STOREPRICE FROM STOREALL WHERE MD_GOODSNO = @M_GOODSNO 
INSERT INTO STOREIOM( MD_STOREIONO, MD_INDEX, MD_GOODSNO,  MD_GOODSPROOFNO, MD_MAKEDATE,     MD_GOODSUNIT , MD_QUANTITY,   
MD_PRICE,     MD_MONEY, MD_RESERVE,  MD_CHANGERATE,   MD_CHECKQUANTITY,MD_CHECKMONEY, MD_STOREPRICE )  
VALUES ( @M_PROOFNO,   @M_INDEX, @M_GOODSNO,  @M_PCH,          @M_DATE,         @M_GOODSUNIT , @M_QUANTITY,   
@M_PRICE,     @M_MONEY, NULL      ,  @M_CHANGERATE,   @M_QUANTITY,     @M_MONEY,      @M_STOREPRICE )  
IF @@ROWCOUNT=0    GOTO ERRORRET
IF (@M_PAYFLAG ='P' ) BEGIN 
INSERT INTO SALEPAYM  
( MD_SALEPAYNO, MD_SALEPROOFNO, MD_INDEX,     MD_GOODSNO,  MD_GOODSPROOFNO,  MD_QUANTITY,   
MD_PRICE,     MD_MONEY,       MD_DISMONEY,  MD_RESERVE,  MD_FLAG  ,        MD_GOODSUNIT)  
VALUES(@M_SALEPAYNO, @M_PROOFNO,   @M_INDEX,     @M_GOODSNO,  @M_PCH,  @M_QUANTITY*(-1),                @M_PRICE,  @M_MONEY*(-1),       0,  NULL,        -1 ,              @M_GOODSUNIT)  
IF (@@ROWCOUNT <1) RETURN
END 
IF (@M_PAYFLAG ='O' ) BEGIN 
INSERT INTO SALEOWNM  
(MD_SALEPROOFNO, MD_INDEX,  MD_GOODSNO, MD_GOODSPROOFNO, MD_QUANTITY, MD_PRICE,   MD_MONEY, MD_DISMONEY ,MD_GOODSUNIT)  
VALUES(@M_PROOFNO,  @M_INDEX,  @M_GOODSNO, @M_PCH, @M_QUANTITY*(-1), @M_PRICE,@M_MONEY*(-1),   0 ,@M_GOODSUNIT)  
IF (@@ROWCOUNT <1) RETURN
END 
SET @M_QUANTITY = @M_QUANTITY * @M_CHANGERATE
UPDATE SINGPROF  
SET MD_MONEY = MD_STOREPRICE * (MD_QUANTITY - @M_QUANTITY),  MD_QUANTITY = MD_QUANTITY - @M_QUANTITY
WHERE (MD_STORELOC  = @M_STORELOC ) AND  ( MD_GOODSNO = @M_GOODSNO ) AND (MD_GOODSPROOFNO = @M_PCH ) 
IF (@@ROWCOUNT <1) RETURN (-1)
UPDATE  STOREGOO
SET MD_MONEY = MD_PRICE * (MD_QUANTITY - @M_QUANTITY),  MD_QUANTITY = MD_QUANTITY - @M_QUANTITY
WHERE (MD_STORELOC  = @M_STORELOC ) AND  ( MD_GOODSNO = @M_GOODSNO ) 
IF (@@ROWCOUNT <1) RETURN (-1)
UPDATE BUYPROFM SET MD_LEFTQUANTITY = MD_LEFTQUANTITY - @M_QUANTITY WHERE MD_BUYPROOFNO = @M_SALEPROOFNO AND MD_INDEX =@M_INDEX;
FETCH MY_CURS INTO @M_INDEX, @M_STORELOC,@M_GOODSNO,  @M_PCH     ,     @M_GOODSUNIT, @M_QUANTITY, @M_PRICE , @M_MONEY,    @M_TAXMONEY,@M_CHANGERATE
END
EXITLINE:
CLOSE MY_CURS
DEALLOCATE MY_CURS
RETURN 0
ERRORRET:
CLOSE MY_CURS
DEALLOCATE MY_CURS
RETURN (-1)其中,msp_putid 和 msp_getid这两个存储过程,在此存储过程之前创建成功
为什么总是提示出错,sql在查询分析器中执行无问题;
请各位高手指教!!!