Autor Zpráva
leorond
Profil
Ahoj, mám tu problém s několika stored procedurami, stále mi to háže tu samou chybu ale jsem naprostý začátečník v tomto odvětví. Mohl by mi někdo pomoci to opravit? Nevím zda jsem to napsal správně.

USE [MuOnline]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[WZ_PeriodItemInsert]

  @userGuid        int,
  @CharacterName    varchar(10),
    @ItemCode        int,
  @OptiOnType        tinyint,
  @EffectType1        tinyint,
  @EffectType2        tinyint,
    @TotalUsePeriod    int,
  @ExpireDate        varchar(20)
AS
BEGIN
    DECLARE  @ErrorCode int
    DECLARE  @periodItemIndex int

    SET  @ErrorCode = 0
    SET  @periodItemIndex = 0

    SET XACT_ABORT ON
    SET NOCOUNT ON

    BEGIN TRANSACTION

    SELECT   @periodItemIndex = PeriodIndex FROM T_PeriodItem_Info WHERE UserGuid =  @userGuid AND CharacterName =  @CharacterName AND OptionType =  @OptiOnType AND UsedInfo = 1

    --IF (  @periodItemIndex != 0 )
    --BEGIN
    --    UPDATE T_PeriodItem_Info SET UsedInfo = 0 WHERE UserGuid =  @userGuid AND CharacterName =  @CharacterName AND OptionType =  @OptiOnType AND UsedInfo = 1
    --END

    INSERT INTO T_PeriodItem_Info (UserGuid, CharacterName, ItemCode, OptionType, EffectType1, EffectType2, LeftTime, BuyDate, ExpireDate, UsedInfo) VALUES
    (  @userGuid,  @CharacterName, @ItemCode,  @OptiOnType,  @EffectType1,  @EffectType2, @TotalUsePeriod, GETDATE(),  @ExpireDate, 1 )
    IF(   @ERROR <> 0 )
    BEGIN
        SET  @ErrorCode = 2
    END

    IF (  @ErrorCode  <> 0 )
        ROLLBACK TRANSACTION
    ELSE
        COMMIT TRANSACTION

    SELECT  @ErrorCode

    SET NOCOUNT OFF
    SET XACT_ABORT OFF
END

Msg 137, Level 15, State 2, Procedure WZ_PeriodItemInsert, Line 35
Must declare the scalar variable "@ERROR".


Děkuji za pomoc a prosím kdyby jste mi tu opravu mohli trošku přiblížit kde jsem vlastně udělal chybu.
Zechy
Profil
leorond:
IF(   @ERROR <> 0 )
Zřejmě si smazal něco co si neměl (nebo ti, od koho pochází SQL skripty pro server fily), co si pamatuji, tak WebZeni v té funkci mají ještě by default definovanou proměnou @ERROR, která tam právě není.

A doporučil bych naučit se chápat chybové hlášky, nejsou tam pro srandu :-).
leorond
Profil
Krásně napsáno ale není to pravda, pokud se podíváš tak je tam chyba a to „IF( @ERROR <> 0 )“ má tam být @@

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: