[SQL]Brauche Hilfe mit einen SQL-Script

  • Also
    ich will das in der Tabelle alle Werte Aus der Spalte tBan um eins gesenkt werden wenn ich dieses SQL ausführe in PHPMyAdmin

    SQL
    DECLARE @Bann INT;
    UPDATE `Samp`.`gfplayers` SET @Bann = `tBan` WHERE `gfplayers`.`tBan` >0 LIMIT 1 ;
    SET @Bann = @Bann-5;  
     UPDATE `Samp`.`gfplayers` SET `tBan` = @Bann WHERE `gfplayers`.`tBan` =0 LIMIT 1 ;


    aber irrgendwie wills nicht gehen
    könnt ihr mir helfen?


    Fehler:

    Code
    SQL-Befehl:                   DECLARE@Bann INT;
    
    
               MySQL meldet:    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE @Bann INT' at line 1

    MTA Reallife


    http://www.vio-rl.de
    MTA-Reallife: 178.63.2.73:22003
    TS3: 178.63.2.73
    MTA-Race-IP: 85.25.1.219:22003

  • Das liegt daran, daß man Declare nur in Begin und End Blöcken verwenden darf.

    SQL
    DELIMITER ;
    CREATE PROCEDURE updateBan()
    BEGIN
        DECLARE @Bann INT;
        UPDATE `Samp`.`gfplayers` SET @Bann = `tBan` WHERE `gfplayers`.`tBan` >0 LIMIT 1 ;
        SET @Bann = @Bann-5;  
        UPDATE `Samp`.`gfplayers` SET `tBan` = @Bann WHERE `gfplayers`.`tBan` =0 LIMIT 1 ;
    END;
    CALL updateBan();


    Hier könntest dud ann auch einfach mit Parametern arbeiten.

  • ich bekomm den selben fehler immernoch =(
    :
    SQL-Befehl:
    DELIMITER;


    CREATE PROCEDURE updateBan( ) BEGIN DECLARE@Bann INT;



    MySQL meldet:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@Bann INT' at line 3

    MTA Reallife


    http://www.vio-rl.de
    MTA-Reallife: 178.63.2.73:22003
    TS3: 178.63.2.73
    MTA-Race-IP: 85.25.1.219:22003

  • SQL
    DELIMITER ;
    CREATE PROCEDURE updateBan(IN Bann INT)
    BEGIN
        UPDATE `Samp`.`gfplayers` SET Bann = `tBan` WHERE `gfplayers`.`tBan` >0 LIMIT 1 ;
        UPDATE `Samp`.`gfplayers` SET `tBan` = (Bann-5) WHERE `gfplayers`.`tBan` =0 LIMIT 1 ;
    END;
    CALL updateBan(6);


    oder:


    SQL
    DELIMITER ;
    CREATE PROCEDURE updateBan()
    BEGIN
        DECLARE @Bann INT DEFAULT 44;
        UPDATE `Samp`.`gfplayers` SET @Bann = `tBan` WHERE `gfplayers`.`tBan` >0 LIMIT 1 ;
        SET @Bann = @Bann-5;  
        UPDATE `Samp`.`gfplayers` SET `tBan` = @Bann WHERE `gfplayers`.`tBan` =0 LIMIT 1 ;
    END;
    CALL updateBan();


    Die 44 müßtest du ändern, aber MySQL braucht halt einen Value bevor etwas gesetzt werden kann. ;)

  • also kp


    aber er sagt mir immer noch den selben fehler bei bneiden varianten


    Edit://
    Sag mal kannst du Germany nicht schreiben :x

    MTA Reallife


    http://www.vio-rl.de
    MTA-Reallife: 178.63.2.73:22003
    TS3: 178.63.2.73
    MTA-Race-IP: 85.25.1.219:22003

    Einmal editiert, zuletzt von DMA ()