multistorm
Goto Top

MySQL Function Anzahl Datensätze ermitteln

Hallo, aktuell stehe ich vor einem Problem bei dem ich nicht weiter komme.
ich wollte mit eine MySQL funtion Schreiben die für mich einen neuen User in die DB einrägt.
es soll nun aber vorab geprüft werden ob der benutzt schon exisitiert.

ich hatte es so probiert:

DECLARE foundLogin INT(1);
    SET foundLogin = 0;
	SELECT * FROM Users WHERE login = login;
    SELECT ROW_COUNT() INTO foundLogin;

aber der weg scheint komplett falsch zu sein, den ich bekomme vom SQL Serve nur gemecker zurück:

10:40:20	Apply changes to createNewUser	Error 1415: Not allowed to return a result set from a function SQL Statement:

Sollte doch eigentlich nicht so schwer sein oder?

lg

Content-Key: 327289

Url: https://administrator.de/contentid/327289

Ausgedruckt am: 19.03.2024 um 03:03 Uhr

Mitglied: atze187
atze187 24.01.2017 aktualisiert um 12:40:11 Uhr
Goto Top
1. Lange kein MySQL mehr gemacht, aber wird Benutzer-Variablen nicht ein @ vorangestellt?
2. Was spricht gegen folgendes?

SELECT COUNT(*) FROM ...
bzw.
SET @foundLogin = SELECT COUNT(*) FROM ...
Mitglied: MultiStorm
MultiStorm 24.01.2017 um 13:21:50 Uhr
Goto Top
funktioniert leider nicht,
er sagt gleich unexpetet Select mit und ohne @
Mitglied: em-pie
Lösung em-pie 24.01.2017 aktualisiert um 13:52:23 Uhr
Goto Top
Moin,


wenn ich den obigen Fehler mal google, finde ich folgenden Eintrag:
http://stackoverflow.com/questions/11880306/why-mysql-is-giving-error-n ...

Es schjeint, dass er mit einer Variablenzuweisung nicht kla kommt.
Hast du mal mit Select xxx INTO yyy gearbeitet?

Und du musst oben ja kein Select * from Users machen...
Wähle einfach eine Spalte aus...


Gruß
em-pie
Mitglied: MultiStorm
MultiStorm 26.01.2017 um 13:05:12 Uhr
Goto Top
ja gegoogelt hatte ich das,
in zwischen läuft es auch, ich kann jetzt leider nicht mehr genau sagen was der fehler war, da ich da so viel drinne rumprobiert hatte,
aber ich glaube das Problem was das das COUNT(*) keine namenszuweisung hatte => COUNT(*) as Anzahl
Danke für dein bemühen !