Autor | Zpráva | ||
---|---|---|---|
Macro Profil |
#1 · Zasláno: 8. 12. 2009, 14:46:46
zdravím,
potrebujem vytvoriť procedúru v MySQL databáze. Môj kód vyzerá takto CREATE OR REPLACE PROCEDURE `upd_sk`(ct int, mnoz int) BEGIN BEGIN UPDATE `skladova_karta` SET `aktualny_stav` = aktualny_stav + mnoz WHERE `cislo_karty` = `ct`; END; END `upd_sk`; Avšak phpMyAdmin ohlási #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 'PROCEDURE `upd_sk`(ct int, mnoz int) BEGIN BEGIN UPDATE `skl' at line 1 Skúšal som už rôzne variacie, ale ani raz sa mi to nepodarilo vytvoriť. Nepomohol by mi niekto s týmto. Zrejme bude chyba v kóde procedúry, ale ja už neviem kde. PS: Mysql: 5.1.37, phpMyAdmin 3.2.0.1 Vopred ďakujem |
||
TomášK Profil |
#2 · Zasláno: 8. 12. 2009, 14:53:49
MySQL nezná u procedury 'OR REPLACE', viz http://dev.mysql.com/doc/refman/5.0/en/create-procedure.htmlhtml. Řeším to tak, že před to dám ještě řádek DROP PROCEDURE IF EXISTS. A pozor na oddělovače, měl by být nastavený jiný než středník, aby se to nepletlo se středníky uvnitř procedury.
|
||
Kajman_ Profil * |
#3 · Zasláno: 8. 12. 2009, 15:00:57
A ct asi není sloupec, tak nemá být ve zpětných apostrofech.
|
||
Macro Profil |
#4 · Zasláno: 8. 12. 2009, 15:21:06
Super, ďakujem veľmi pekne už to ide, kompletný kód pre niekoho kto bude mať podobný problém
DROP PROCEDURE IF EXISTS `upd_sk` / CREATE PROCEDURE `upd_sk`( ct int, mnoz int) BEGIN BEGIN UPDATE `skladova_karta` SET `aktualny_stav` = `aktualny_stav` + mnoz WHERE `cislo_karty` = ct; END; END; oddeľovač / |
||
Kcko Profil |
#5 · Zasláno: 8. 12. 2009, 15:30:02
Na co 2x BEGIN a proc takovyto kod musi byt v procedure?
|
||
Macro Profil |
#6 · Zasláno: 8. 12. 2009, 15:43:12
Mal som v škole urobiť jeden projekt cez Oracle databázu (nejaký jednoduchý sklad). Tento semester som mal urobiť jednoduchý obchod, tak som využil staré zadanie, a keďže som nemal už prístup na Oracle server a nechcelo sa mi to vybavovať migroval som na MySQL, a snažil sa poupravovať kódy, a v Oracli si musel mať na konci END názov procedúri, v mysql to tak nešlo, a skúšal som rôzne veci, a takto to vzalo a funguje, už som to neoptimalizoval, keďže koniec semestra sa blíži, a musím k tomu urobiť ešte dokumentáciu a čaká ma ešte jeden projekt.
|
||
Časová prodleva: 14 let
|
0