php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.09.2008, 13:05  
Neuer Benutzer
 
Registriert seit: 03.09.2008
Beiträge: 5
rick7401 befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Wie Wert aus SELECT in Variable speichern oder SQL Syntax?

Hallo,

folgender Code zum anlegen einer Procedure wird einfach nicht von mysql angenommen..
Code:
delimiter |
CREATE PROCEDURE `create_random_name`
(IN FK_Nation_ID_IN INT, IN Gender_IN INT,IN FK_Func_Cat_ID_IN INT)
BEGIN

/*****************************************************/
  DECLARE @NatID INTEGER;
  SET @NatID = FK_Nation_ID_IN;

  /* Wenn NatID = 0 dann eine zufällige existierende Nation erzeugen */
  IF @NatID = 0 THEN
  ( SELECT FK_Nation_ID
    INTO @NatID
    FROM names_ressources
    ORDER BY RAND(NOW())
    LIMIT 1
  );

/****************************************************/

  INSERT INTO names (LastName, GivenName, FK_Nation_ID, Gender, FK_Function_Category_ID)
    /* Namen aus names_ressources zusammensetzen */
    SELECT t1.Name, t2.Name, t1.FK_Nation_ID, t2.Gender, FK_Func_Cat_ID_IN
    FROM names_ressourcesx t1, names_ressources t2
    WHERE
    (   t1.FK_Nation_ID = @NatID
    AND t2.FK_Nation_ID = @NatID
    AND t1.Category = 1 /* LastName */
    AND t2.Category = 2 /* GivenName */
    AND t2.Gender=Gender_IN /*  */
    )
    ORDER BY RAND(NOW()) LIMIT 1;
END;
|
die Fehlermeldung ist
Zitat:
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 '@NatID INTEGER;
SET @NatID = FK_Nation_ID_IN;
/* Wenn NatID = 0 dann ein' at line 5
nun weiss ich nicht, liegt es daran, dass ein SELECT nach der IF @NatID = 0 Abfrage nicht erlaubt ist oder ist es ein Syntaxfehler.
Wenn ich den eingerahmten Teil rausnehme, funktioniert das Anlegen der Prozedur.

Vielleicht hat jemand ja mal ein Auge dafür

Grüsse
rick7401 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.09.2008, 13:12  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
nun weiss ich nicht, liegt es daran, dass ein SELECT nach der IF @NatID = 0 Abfrage nicht erlaubt ist oder ist es ein Syntaxfehler.
Also das steht nun aber beides wirklich offensichtlich in der Fehlermeldung drin
Zitat:
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 '@NatID INTEGER;
SET @NatID = FK_Nation_ID_IN;
/* Wenn NatID = 0 dann ein' at line 5
MySQL stört sich an @NatID nach DECLARE.
David ist offline   Mit Zitat antworten
Alt 05.09.2008, 13:35  
Neuer Benutzer
 
Registriert seit: 03.09.2008
Beiträge: 5
rick7401 befindet sich auf einem aufstrebenden Ast
Standard

naja es steht 'near at' .. also ein bißchen Spielraum ist da schon..

hmmh, anscheinend beginnen in mysql die lokalen Variablen nicht mit @ wie bei MSSQL.

ich hab die jetzt alle rausgenommen, aber jetzt meckert er das letzte LIMIT oder END an..
Müssen da Semikolons dahinter oder nicht? Beim probieren ging beides nicht..

sieht jetzt so aus..
Code:
delimiter |
CREATE PROCEDURE `create_random_name`
(IN FK_Nation_ID_IN INT, IN Gender_IN INT,IN FK_Func_Cat_ID_IN INT)
BEGIN

  DECLARE NatID INT;
  SET NatID = FK_Nation_ID_IN;

  /* Wenn NatID = 0 dann eine zufällige existierende Nation erzeugen */
  IF NatID = 0 THEN
  ( SELECT FK_Nation_ID
    INTO NatID
    FROM names_ressources
    ORDER BY RAND(NOW())
    LIMIT 1
  );

  INSERT INTO names (LastName, GivenName, FK_Nation_ID, Gender, FK_Function_Category_ID)
    /* Namen aus names_ressources zusammensetzen */
    SELECT t1.Name, t2.Name, t1.FK_Nation_ID, t2.Gender, FK_Func_Cat_ID_IN
    FROM names_ressourcesx t1, names_ressources t2
    WHERE
    (   t1.FK_Nation_ID = NatID
    AND t2.FK_Nation_ID = NatID
    AND t1.Category = 1 /* LastName */
    AND t2.Category = 2 /* GivenName */
    AND t2.Gender=Gender_IN /*  */
    )
    ORDER BY RAND(NOW())
    LIMIT 1;
END;
|
rick7401 ist offline   Mit Zitat antworten
Alt 05.09.2008, 15:16  
Neuer Benutzer
 
Registriert seit: 03.09.2008
Beiträge: 5
rick7401 befindet sich auf einem aufstrebenden Ast
Standard

END IF muss es heissen..

[code]
IF(NatID=0) THEN
SELECT FK_Nation_ID_IN
INTO NatID
FROM names_ressources
ORDER BY RAND(NOW())
LIMIT 1;
END IF;
rick7401 ist offline   Mit Zitat antworten
Alt 06.09.2008, 06:29  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von rick7401 Beitrag anzeigen
naja es steht 'near at' .. also ein bißchen Spielraum ist da schon..
Ja, aber nach vorne. Der Fehler kann vor der angegeben Stelle liegen.
David ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
String aus einer Seite in Variable speichern KimKaye PHP Tipps 2008 10 14.05.2008 09:57
select wert einer zahl tomson Datenbanken 3 19.07.2006 12:01
INSERT syntax - gibt es die möglichkeit VALUES und SELECT zu PermanetMarker Datenbanken 8 06.07.2006 12:48
[JavaScript] Event Handler in form select - Syntax? winfo_cologne HTML, Usability und Barrierefreiheit 5 29.03.2006 16:47
Select letzter Wert als erster ... andrew22 Datenbanken 11 18.01.2006 23:16
select nimmt neuen Wert nicht an Smiley HTML, Usability und Barrierefreiheit 2 29.11.2005 01:17
Anfängerfrage SELECT Syntax PHP Tipps 2005 4 23.02.2005 14:45
Wert aus Formular in Variable speichern PHP Tipps 2004-2 2 01.12.2004 16:56
[Erledigt] 2 mal select 1 form PHP-Fortgeschrittene 1 01.09.2004 20:13
Variable kurzzeitig speichern PHP Tipps 2004 3 01.09.2004 17:26
[Erledigt] Text in Variable speichern PHP Tipps 2004 5 30.08.2004 13:20
Wert einer Variable minütlich erhöhen PHP Tipps 2004 1 12.08.2004 14:58
speichern in Variable !? PHP Tipps 2004 6 23.07.2004 13:55
array wert als variable nähmen PHP Tipps 2004 15 07.07.2004 21:21
Variablen wert speichern PHP Tipps 2004 3 29.06.2004 20:02

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql select variable, sql select into variable, select in variable, sql variable select, sql select in variable, mssql select into variable, sql select ergebnis in variable, sql select in variable speichern, mysql select variable, mysql select in variable, sql wert in variable speichern, select variable, select in variable speichern, select variable sql, sql variablen select, select into variable mssql, sql select as variable, mysql select into variable, sql variable in select, ms sql select into variable

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:24 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum