if exists probleem binnen mysql stored procedure

Pagina: 1
Acties:
  • 208 views

Onderwerpen


Acties:
  • 0 Henk 'm!

  • kurtjeke
  • Registratie: Oktober 2010
  • Laatst online: 14-03-2011
Hi all,

Ik heb een probleem binnen een mysql stored procedure. (zie hieronder)
Als ik de 'IF EXISTS' weghaal bij DROP TEMPORARY TABLE IF EXISTS tmp_arrivaldates; dan maakt de procedure zich goed aan. Zoals hieronder krijg ik de fout

[Err] 1064 - 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 'DELIMITER' at line 38

Hopelijk kunnen jullie mij helpen want Google wist het antwoord niet :(

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
DROP PROCEDURE IF EXISTS ProGetArrivalDates;
DELIMITER $$ 
CREATE PROCEDURE ProGetArrivalDates()
    BEGIN
        DECLARE lastSync DATE; #date of last successfull sync with @leisure
        DECLARE currAvailString TEXT;
        DECLARE charToCheck CHAR(1);
        DECLARE currDate DATE;
        DECLARE cur1 CURSOR FOR SELECT AvailString FROM jsonrpc.avail_by_night LIMIT 0,10; #cursor to loop through the resultset

        SELECT last_sync INTO lastSync FROM jsonrpc.last_sync WHERE id=1; #load last successfull sync date and store it in lastSync
        
        DROP TEMPORARY TABLE IF EXISTS tmp_arrivaldates;
        CREATE TEMPORARY TABLE tmp_arrivaldates (ad DATE);

        OPEN cur1;
        
        read_loop: LOOP #loop through resultset
            SET currDate = lastSync;
            
            FETCH cur1 INTO currAvailString;#save availstring from result into variable to work with
            
            WHILE LENGTH(currAvailString) > 0 DO
                SET charToCheck = LEFT(currAvailString,1);
                
                IF charToCheck BETWEEN 2 AND 3 THEN 
                    INSERT INTO tmp_arrivaldates(ad) VALUES (currDate);
                END IF;

                SET currAvailString = substr(currAvailString,2); #cut of selected char
                SET currDate = DATE_ADD(currDate, INTERVAL 1 DAY);
            END WHILE;
        END LOOP;

        CLOSE cur1;

        SELECT * FROM tmp_arrivaldates;
    
    END$$
DELIMITER ;

[ Voor 0% gewijzigd door RobIII op 05-10-2010 19:02 . Reden: Code tags toegevoegd ]


Acties:
  • 0 Henk 'm!

  • Erkel
  • Registratie: Mei 2006
  • Laatst online: 03-09 10:18
Laatste delimiter weghalen? Dan doet ie het bij mij wel....

C2D E6600 - 2048MB Kingston - Sapphire HD2900XT - 200Gb Samsung - Asus P5B-E


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Euh; sorry, maar zo werken we hier niet. Het is niet de bedoeling dat je je code dumpt en wij even de fout voor je aanwijzen (Kan iemand even...? / quickfix). We zien, zoals je zult lezen in onze Quickstart, graag eigen inzet terug in je topic. En daar hoort dus ook bij dat je meldt/toont wat je dan hebt gezocht, gevonden, geprobeerd etc. om tot een oplossing te komen. Ik zie daar niets van terug; alleen de SP met de fout. Verder zien we code graag tussen code tags. Tot slot is dit natuurlijk gewoon een gevalletje "foutmelding (begrijpend) lezen".

Ondanks dat alles van harte welkom op GoT en een leuke tijd gewenst hier (want het is hier leuk *O* ). Als je zorgt dat je voortaan onze voorgenoemde quickstart hanteert bij het openen van een topic is er niets aan de hand ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.