Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 02:15

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Hilfe] Mysql Procedure

Discussion on [Hilfe] Mysql Procedure within the Web Development forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 1
Join Date: Jul 2008
Posts: 78
Received Thanks: 93
[Hilfe] Mysql Procedure

Hallo Liebe Comm,
Ich Sitze Nun schon 2 tagen an meiner Mysql Procedure und finde den Fehler einfach nicht vielleicht kann ja mal , jemand drüber schauen ich denk mir schon ich hätte nin Brett am Kopf

Code:
Create PROCEDURE `Create_Guild` (IN pName VARCHAR(16), IN pPassword VARCHAR(12), IN pAllowGuildWar SMALLINT(1),IN pCreaterID INT(11),IN pCreateTime TIMESTAMP,OUT pID INT(11))
BEGIN
 
 SET pID = 0;
 
 IF EXISTS (SELECT Name FROM Guilds WHERE Name = pName)
 BEGIN
  SELECT -1;
  RETURN;
 END
 
 SET pID = SELECT FLOOR(1+RAND() * 2147483647)  AS RANDOM_INT;

 WHILE EXISTS (SELECT ID FROM Guilds WHERE ID = pID)
 BEGIN
  SET pID = SELECT FLOOR(1+RAND() * 2147483647)  AS RANDOM_INT;
 END

BEGIN
INSERT INTO `Guilds` (Name, Password, AllowGuildWar, CreaterID, CreateTime) 
VALUES (pName, pPassword, pAllowGuildWar, pCreaterID, pCreateTime);
END
BEGIN
INSERT INTO GuildAcademy (GuildID,Message) VALUES (pID,'');
END

END
ich werde für Sehr Dankbar

mfg mathias1000
Mathias1000 is offline  
Old 07/23/2012, 20:48   #2
 
elite*gold: 0
Join Date: Jun 2012
Posts: 187
Received Thanks: 58
Name ist ein reserviertes wort. das solltest du nicht als spaltenname verwenden.

Dann musst du noch ein THEN nach IF EXISTS( ... ) ergänzen, das gleiche weiter unter nach dem while, allerdings ein DO. was die schleife machen soll kann ich nicht ganz erahnen, sieht total schwachsinnig aus. wenn du eine einzigartige ID brauchst - dann mach doch einfach ne spalte mit nem unique key?

RETURN; darfst du in procedures nicht benutzen, eine procedure 'returned' ja nichts. select -1 hört sich auch merkwürdig an. ein IF hat auch keinen begin .. end block, nach dem if-statement kommen die anweisungen, dann ggf. ein else und am schluss "END IF;".

und je nach dem welche db-engine du benutzt und wie du 'pID' speicherst ist der wert zu groß, 2147483647 aka 2^31-1 ist schon das maximum für einen signed integer.

und ich könnte so noch drei-vier seiten lang weiter machen, mach ich aber nicht:



Achja, und besorg dir einen mysql-standalone client mit query editor. dann siehst du auch was mysql alles nicht an deiner query passt. z.b.
tnd0 is offline  
Old 07/28/2012, 11:12   #3
 
sava's Avatar
 
elite*gold: 1
Join Date: Dec 2006
Posts: 360
Received Thanks: 135
Quote:
Originally Posted by tnd0 View Post
Name ist ein reserviertes wort. das solltest du nicht als spaltenname verwenden.
Gut ist es nicht aber mit Backticks wäre es dennoch kein Problem.
sava is offline  
Old 07/29/2012, 19:28   #4
 
elite*gold: 1
Join Date: Jul 2008
Posts: 78
Received Thanks: 93
SO habs jeze Selber gelöst kann geclosed werden

LÖSUNG:
Code:
proc_label:BEGIN
IF EXISTS (SELECT GuildName FROM Guilds WHERE GuildName = pName)
	THEN
  SELECT -1;
	LEAVE proc_label;
	END IF;
WHILE EXISTS (SELECT ID FROM Guilds WHERE ID = pID) DO
SET pID = FLOOR(1+RAND() * 200000);
END WHILE;

START TRANSACTION;
INSERT INTO `Guilds` (GuildName, pPassword, AllowGuildWar, CreaterID, CreateTime) 
VALUES (pName, pPassword, pAllowGuildWar, pCreaterID, pCreateTime);
COMMIT;
IF @ROWCOUNT = 0 Then
   ROLLBACK;
   SELECT -2;
	LEAVE proc_label;
END IF;

START TRANSACTION;
INSERT INTO GuildAcademy (GuildID,Message) VALUES (pID,'');
COMMIT;
IF @ROWCOUNT = 0 Then
   ROLLBACK;
   SELECT -3;
 	LEAVE proc_label;
END IF;
END
mfg mathias1000
Mathias1000 is offline  
Old 07/30/2012, 23:55   #5


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Arrow General Coding -> Web Development

#moved
MrSm!th is offline  
Reply


Similar Threads Similar Threads
[Hilfe]Root MySql Problem Schnelle Hilfe
02/04/2012 - Metin2 Private Server - 9 Replies
hallo leute, wir haben ein mysql problem mit unserem Root server, als wir eine neue DB einspielen wollten. Genaueres seht ihr in Team Viewer. Bei richtiger Lösung des Problems gibt evtl. ne kleine Belohnung ! Bitte schnell helfen !! skype: hossi47170 mfg, bomber111
[Help]MySql hilfe
08/18/2010 - Metin2 Private Server - 2 Replies
Hey liebe com... ich habe folgendes problem .. : Ich will Server ( Root ) Starten , aber denn kommt no player mysql connected MySQL ist on & installiert ... Mysql & game ordner haben beide Rechte. weiß jemand vllt. wodran es leigen kann. ? :p
[HILFE]Ich kann den mysql port nicht freischalten[HILFE]
06/04/2010 - Metin2 Private Server - 7 Replies
Also ich habe den Port 3306 bei Portmap freigeschaltet , mit der server-ip. Jetzt sieht es gut aus , aber der Port lässt sich nicht an stellen. Hab ein Bild hochgeladen könnt euch das ja mal angucken. Wäre gut wenn mir jemand helfen könnte. Hier ist das Bild nochmal in größer: http://img5.imagebanana.com/img/15exvy6n/hilfe.pn g
[HILFE] BRAUCHE HILFE MIT MySQL
10/07/2009 - Metin2 PServer Guides & Strategies - 0 Replies
Hay liebe Com. Und zwar ich habe ein Problem ich kann irrgend wie nicht Mysql Config. Meine ports am Pc und am router sind Frei aber ich weis immer noch nciht warum der nicht will könnte mir jemand helfen!! vllt mach ich ja auch was falsch eine richtige config. anleitung wäre nicht schlecht oder wie könnte ich es machen das ich MySQL nicht brauch etc. pls PM ME!! hier noch ein screen was kommt!



All times are GMT +1. The time now is 02:16.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.