[MYSQL] create procedure

Pagina: 1
Acties:
  • 237 views

Acties:
  • 0 Henk 'm!

  • Meijuh
  • Registratie: December 2006
  • Laatst online: 17-03 21:08
Ik probeer een procedure te maken in phpmyadmin.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CREATE PROCEDURE save_answer
(IN i_respondent_id INT(10), i_vraagonderdeel_id INT(10), i_antwoord_waarde TEXT, i_test_antwoord TINYINT(1))
BEGIN
    DECLARE antwoord_id INT DEFAULT 0;
    SELECT
            id
        FROM
            antwoord
        WHERE
            respondent_id = i_respondent_id AND vraagonderdeel_id = i_vraagonderdeel_id INTO antwoord_id;
    IF (antwoord_id != 0) THEN
        UPDATE
            antwoord
        SET
            antwoord_waarde = i_antwoord_waarde,
            test_antwoord = i_test_antwoord
        WHERE
            id = antwoord_id;   
    ELSE 
        INSERT INTO antwoord (respondent_id, vraagonderdeel_id, antwoord_waarde, test_antwoord)
                    VALUES(i_respondent_id, i_vraagonderdeel_id, i_antwoord_waarde, i_test_antwoord);
    END IF;
END


phpmyadmin zegt:

code:
1
2
3
4
5
6
7
8
9
CREATE PROCEDURE save_answer(
IN i_respondent_id INT( 10 ) ,
i_vraagonderdeel_id INT( 10 ) ,
i_antwoord_waarde TEXT,
i_test_antwoord TINYINT( 1 )
) BEGIN DECLARE antwoord_id INT DEFAULT 0;

MySQL retourneerde: Documentatie
#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 '' at line 4


Ik ben zelf nog niet zo bedreven in het maken van procedures, dus kan iemand me zeggen waarom dit fout is? Die regel 4 is in de code ook regel 4.

Van een TEXT field hoef je toch geen grootte op te geven?

Asus EN8800GTS, Asus P5E, Intel E8400, 2x500gb Spinpoint (raid0), Zalman HP 600 watt, cnps 9500 led, creative xfi music, 4x1gb hyperX PC2 8500


Acties:
  • 0 Henk 'm!

  • sky-
  • Registratie: November 2005
  • Niet online

sky-

qn nna 👌

Sinds wanneer maak je een procedure in PhpMyAdmin ? Dat doe je in MySQL (of een andere DB).

Wat je fout doet, je geeft niet overal aan of het IN/INOUT of OUT is. Dat moet je wel doen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CREATE PROCEDURE save_answer
(IN i_respondent_id INT(10), IN i_vraagonderdeel_id INT(10),IN i_antwoord_waarde TEXT, IN i_test_antwoord TINYINT(1))
BEGIN
    DECLARE antwoord_id INT DEFAULT 0;
    SELECT
            id
        FROM
            antwoord
        WHERE
            respondent_id = i_respondent_id AND vraagonderdeel_id = i_vraagonderdeel_id INTO antwoord_id;
    IF (antwoord_id != 0) THEN
        UPDATE
            antwoord
        SET
            antwoord_waarde = i_antwoord_waarde,
            test_antwoord = i_test_antwoord
        WHERE
            id = antwoord_id;    
    ELSE 
        INSERT INTO antwoord (respondent_id, vraagonderdeel_id, antwoord_waarde, test_antwoord)
                    VALUES(i_respondent_id, i_vraagonderdeel_id, i_antwoord_waarde, i_test_antwoord);
    END IF;
END


ps INT(10) bestaat niet.

don't be afraid of machines, be afraid of the people who build and train them.


Acties:
  • 0 Henk 'm!

  • Meijuh
  • Registratie: December 2006
  • Laatst online: 17-03 21:08
Hoe moet ik deze procedure dan zo aanpassen dat deze gaat werken?
en hoe moet ik de grootte van een int aangeven als INT(10) niet bestaat en hoe geef ik die IN/OUT aan?

Ik heb deze procedure letterlijk gekopieerd van een server en probeer deze aan te maken met phpmyadmin op een andere server. Daarom vind ik het zo vreemd dat het niet werkt.

Asus EN8800GTS, Asus P5E, Intel E8400, 2x500gb Spinpoint (raid0), Zalman HP 600 watt, cnps 9500 led, creative xfi music, 4x1gb hyperX PC2 8500


Acties:
  • 0 Henk 'm!

  • dj_vibri
  • Registratie: Oktober 2007
  • Laatst online: 16-09 17:16

dj_vibri

int(e^x) = f(u)^n

Meijuh schreef op vrijdag 21 augustus 2009 @ 14:22:
Hoe moet ik deze procedure dan zo aanpassen dat deze gaat werken?
Kijk eens heeeeeeeeel aandachtig naar de code die Sky gepost heeft..... O-)

Last night I lay in bed looking up at the stars in the sky and I thought to myself, where the heck is the ceiling.


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:31

Creepy

Tactical Espionage Splatterer

Je code + foutmelding dumpen en wachten op een oplossing is hier niet de bedoeling. Hier draait het om zelf programeren. Debuggen en opzoeken hoe iets zou moeten met je dan in eerste instantie zelf ook doen. Zaken als syntax errors e.d. zijn over het algemeen met goed kijken naar je code op te lossen ;)
Sky legt notabene uit wat je aan zou moeten passen.......

[ Voor 8% gewijzigd door Creepy op 21-08-2009 14:50 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Dit topic is gesloten.