Bonsoir,
Pour mon bot de contrôle de vivacité des liens de mon site, je dois faire des liens entre différentes URL d'une même table (et pour limiter les accès à la BDD) je cherche à coder une procédure stockée qui doit faire :
Tables :
ListUrl : Liste des URL (Id, Url, +autres champs sans objets pour la question)
UrlLinked : Liste des liens (IdParent,IdChild)
Paramètres IdParent, URLEnfant
Recherche de l'ID de l'enfant à partir de l'URL
Si pas d'enfant trouvé, l'ajouter à la table ListUrl
Ajouter une entrée dans UrlLinked pour lier le parent et l'enfant.
Mon code actuel
DROP PROCEDURE IF EXISTS AddChild;
DELIMITER $$
CREATE PROCEDURE AddChild(IN pParentId BIGINT, IN pChildURL TEXT)
BEGIN
DECLARE lChildId INT;
SELECT MAX(Id) FROM ListUrl WHERE Url=pChildURL;
IF lChildId IS NULL THEN
INSERT INTO ListUrl (Url,IdParent,LastSeen) VALUES(pChildURL ,pParentId,NOW());
SET lChildId=LAST_INSERT_ID;
END IF;
INSERT INTO UrlLinked (IdParent,IdChild) VALUES(pParentId,lChildId);
END$$
DELIMITER ;
N'étant pas très familier avec les procédures stockées, je galère un peu.
Actuellement avec ce code, j'ai MySql qui a des soucis avec DELIMITER
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 1
En mettant l'instruction
DELIMITER ;
J'ai pourtant, je pense, bien suivi les conseils de la page officielle
http://forums.mysql.com/read.php?98,358569
Même après avoir extrait une autre procédure stockée, je ne vois pas d'où vient l'erreur et je ne peux donc pas tester si mon code est bon.
Edit :
La procédure apparait quand même, quand je l’exécute, ça ajoute l'entrée (qui n'existe pas à la base), mais ça n'ajoute rien à la table UrlLinked, pas d'erreur affichées, je continue mes recherches.
J'interviens principalement en VB6 et VB.NET, avec un peu de C#, mais la modération m'amène souvent sur d'autre langages.
En VB.NET pensez à activer "Option Explicit" et "Option Strict"
A appeller par :
SELECT AddSite('MonSite.TLD')