Det är någon av raderna
SET LOC = LOCATE(', ',REM);
som spökar, kontrollera dem.
Kanske är själva inserten förresten
INSERT INTO TempTable VALUES(REM);
REM är '' eller nåt i den stilen. Jag kan inte mySQL
9 svar · 680 visningar · startad av Travoni
Fösöker att skapa en SP i mysql (5), men jag får syntax error på rad 20 (near '') Vad kan det vara för fel?
CREATE PROCEDURE procUseTemp(sIds varchar(500))
BEGIN
DECLARE FirstPos INT;
DECLARE FirstPos1 INT;
DECLARE SecondPos INT;
SET FirstPos=1;
IF (LENGTH(sIds) > 0) THEN
DROP TABLE IF EXISTS TempTable;
CREATE TEMPORARY TABLE TempTable(id int) ENGINE=MEMORY;
SET SecondPos = LOCATE(',',sIds,FirstPos);
WHILE (SecondPos>0) DO
INSERT INTO TempTable
VALUES(cast(substring(sIds, FirstPos, (SecondPos - FirstPos)) as INT));
set FirstPos=SecondPos+1;
SET SecondPos=LOCATE(',',sIds,FirstPos);
END WHILE;
INSERT INTO TempTable
VALUES(cast(right(sIds, LENGTH(sIds) - FirstPos + 1 ) as INT));
END IF;
SELECT id FROM TempTable;
END;
/R Jag kom på att det var fel SP jag bifogat, men jag får samma fel på den.
Men På denna kod:
...syntax to use near ';
set FirstPos=SecondPos+1;
SET SecondPos=LOCATE(',',sIds,FirstPos);
Det är någon av raderna
SET LOC = LOCATE(', ',REM);
som spökar, kontrollera dem.
Kanske är själva inserten förresten
INSERT INTO TempTable VALUES(REM);
REM är '' eller nåt i den stilen. Jag kan inte mySQL
Ok, se editering.
Du har fortfarande fel på raderna med LOCATE, vad vill du med LOCATE(',' ?
Försöker du ta bort kommat?
Jag lyckas ta mej sjuttsingen inte få till denna heller.
Hittad här: http://forge.mysql.com/snippets/view.php?id=4
Fel på rad 19...
CREATE PROCEDURE split_string (IN input TEXT, IN delimiter VARCHAR(10) )
SQL SECURITY INVOKER
COMMENT 'Splits a supplied string using using the given delimiter,
placing values in a temporary table'
BEGIN
DECLARE cur_position INT DEFAULT 1 ;
DECLARE remainder TEXT;
DECLARE cur_string VARCHAR(1000);
DECLARE delimiter_length TINYINT UNSIGNED;
DROP TEMPORARY TABLE IF EXISTS SplitValues;
CREATE TEMPORARY TABLE SplitValues (
value VARCHAR(1000) NOT NULL PRIMARY KEY
) ENGINE=MEMORY;
SET remainder = input;
SET delimiter_length = CHAR_LENGTH(delimiter);
WHILE CHAR_LENGTH(remainder) > 0 AND cur_position > 0 DO
SET cur_position = INSTR(remainder, delimiter);
IF cur_position = 0 THEN
SET cur_string = remainder;
ELSE
SET cur_string = LEFT(remainder, cur_position - 1);
[B]END IF;[/B]
IF TRIM(cur_string) != '' THEN
INSERT INTO SplitValues VALUES (cur_string);
END IF;
SET remainder = SUBSTRING(remainder, cur_position + delimiter_length);
END WHILE;
END;
I mysql/phpadmin får jag felet på denna rad: DECLARE cur_position INT DEFAULT 1 ;
...Det var hela tiden GUIEN som jag jobbade i som fukcade upp allt. När jag skapade en egen "editor" i presentationslagret så gick det alldeles utmärkt att skapa SP'n. :)
Otroligt att man skall behöva skapa ett eget verktyg för att editera sqler... ;)
Vilken sql-editor använde du?
myPHPAdmin och mySql Front 3.2