![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 27.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
napisałem w MySQL taka procedurę składową i wrzuciłem ją za pomocą skryptu SPEditor Version 0.91 BETA: Kod CREATE PROCEDURE eMU_CreateCharacter(OUT aResult SMALLINT, OUT aCharactersCount SMALLINT, IN sAccountID VARCHAR(10), IN sName VARCHAR(10), IN aClass SMALLINT) BEGIN DECLARE aCount SMALLINT; DECLARE aStrength SMALLINT; DECLARE aDexterity SMALLINT; DECLARE aVitality SMALLINT; DECLARE aEnergy SMALLINT; DECLARE aLeadership SMALLINT; DECLARE aMapNumber SMALLINT; DECLARE aMapPosX SMALLINT; DECLARE aMapPosY SMALLINT; SELECT COUNT(*) INTO @aCount FROM `character` WHERE Name = @sName; IF(@aCount = 0) THEN SELECT COUNT(*) INTO @aCharactersCount FROM `character` WHERE AccountID = @sAccountID; SET @aLeadership = 0; SET @aMapNumber = 0; SET @aMapPosX = 182; SET @aMapPosY = 128; IF(@aClass = 0) THEN SET @aStrength = 18; SET @aDexterity = 18; SET @aVitality = 15; SET @aEnergy = 30; END IF; IF(@aClass = 16) THEN SET @aStrength = 28; SET @aDexterity = 20; SET @aVitality = 25; SET @aEnergy = 10; END IF; IF(@aClass = 32) THEN SET @aStrength = 22; SET @aDexterity = 25; SET @aVitality = 20; SET @aEnergy = 15; SET @aMapNumber = 3; SET @aMapPosX = 182; SET @aMapPosY = 128; END IF; IF(@aClass = 48) THEN SET @aStrength = 26; SET @aDexterity = 26; SET @aVitality = 26; SET @aEnergy = 26; END IF; IF(@aClass = 64) THEN SET @aStrength = 26; SET @aDexterity = 20; SET @aVitality = 20; SET @aEnergy = 15; SET @aLeadership = 15; END IF; IF(@aClass = 80) THEN SET @aStrength = 18; SET @aDexterity = 18; SET @aVitality = 15; SET @aEnergy = 30; END IF; INSERT INTO `character` (`AccountID`, `Name`, `Class`, `Strength`, `Dexterity`, `Vitality`, `Energy`, `Leadership`, `MapNumber`, `MapPosX`, `MapPosY`) VALUES(@sAccountID, @sName, @aClass, @aStrength, @aDexterity, @aVitality, @aEnergy, @aLeadership, @aMapNumber, @aMapPosX, @aMapPosY); SET @aResult = 1; END IF; IF(@aCount = 0) THEN SET @aResult = 0; SET @aCharactersCount = 0; END IF; END; Procedura wrzuciła się bez problemu, ale pojawiają się problemy z jej używaniem. Otóż po uruchomieniu procedury poleceniem Kod CALL eMU_CreateCharacter(@aResult, @aCharactersCount, 'thrall', 'thrall12', '0'); SELECT @aResult; SELECT @aCharactersCount; wyrzucany jest błąd Cytat #1048 - Column 'AccountID' cannot be null Natomiast po zakomentowaniu linii z INSERT, błąd przy callowaniu SPEditor Version 0.91 BETA jest: Cytat Error retrieving temp variable in call. a w PHPMyAdmin zapytanie zwraca NULL ;/. Powiedziec szczerze musze, ze z tych Stored procedures probuje korzystac dopiero od jakies 3 godzin, ale znacznie ulatwi mi to prace i nie chce z nich rezygnowac. Jesli chodzi o jezyki programowania, to znam biegle C++ i Assemblera, takze ogolnie poczatkujacym nie jestem. Korzystam z AppServer 2.5.10, a zawiera on: Apache Web Server Version 2.2.8 PHP Script Language Version 5.2.6 MySQL Database Version 5.0.51b. Z gory dziekuje za pomoc, Pozdrawiam! |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 121 Pomógł: 15 Dołączył: 19.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Pomieszales typy zmiennych. W procedurze zadeklarowales sobie zmienne lokalne (bez @ przed nazwa), a potem uzywasz zmiennych sesyjnych (z @ przed nazwa).
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 10:20 |