Création de proc stock MYSQL

JeanBap
Invité n'ayant pas de compte PHPfrance

11 mars 2010, 20:30

Salut,

je souhaite créer un proc stock (sous mysql, c'est une 1ere), j'utilise Sybase ou Oracle normalement...

Ca ne fonctionne pas:

CREATE PROCEDURE pINSERT_Reportage(IN Name VARCHAR,IN Audit_Current VARCHAR, IN Audit_User VARCHAR, IN Audit_Version INT,IN Audit_Status VARCHAR, IN Audit_Action VARCHAR, OUT retour INT)
BEGIN
DECLARE Audit_Datetime DATETIME;
SELECT CURDATE() INTO Audit_Datetime;
INSERT INTO Reportage (Name, Audit_Current,Audit_Datetime, Audit_User, Audit_Version, Audit_Status, Audit_Action values
(
Name,
Audit_Current,
Audit_Datetime,
Audit_User,
Audit_Version,
Audit_Status,
Audit_Action
);
select @@error INTO retour;

if @retour = 0
BEGIN
INSERT INTO Reportage_HIST values
(
Name,
Audit_Current,
Audit_Datetime,
Audit_User,
Audit_Version,
Audit_Status,
Audit_Action
);
select @@error INTO retour;
END
END|

Message d'erreur=>
#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 'IN Audit_Current VARCHAR, IN Audit_User VARCHAR, IN Audit_Version INT,IN Audit_S' at line 1

autre essai:
CREATE PROCEDURE pINSERT_Reportage(IN Name VARCHAR,IN Audit_Current VARCHAR, IN Audit_User VARCHAR, IN Audit_Version INT,IN Audit_Status VARCHAR, IN Audit_Action VARCHAR, OUT retour INT)
BEGIN
END|

#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 'IN Audit_Current VARCHAR, IN Audit_User VARCHAR, IN Audit_Version INT,IN Audit_S' at line 1

autre essai:
CREATE PROCEDURE pINSERT_Reportage()
BEGIN
SELECT * from Reportage;
END|


idem.

Pouvez vous m'aider car je bloque...

Autre question: comment obtenir le code retour d'une requête, car moi j'utilise ceci:
select @@error INTO retour;

mais je suis quasiment sûr que c'est faux^^.

Merci

Eléphanteau du PHP | 13 Messages

13 mars 2010, 13:32

Salut,
j'ai un peu avancé... Mais il me reste quelques pb.
Voici la procédure que j'arrive à créer:
CREATE PROCEDURE pINSERT_Reportage(IN Name VARCHAR(25),IN Audit_Current VARCHAR(1),IN Audit_Datetime DATETIME, IN Audit_User VARCHAR(25), IN Audit_Version INT(8),IN Audit_Status VARCHAR(14), IN Audit_Action VARCHAR(6), OUT retour INT(2))
BEGIN
INSERT INTO Reportage (Name, Audit_Current,Audit_Datetime, Audit_User, Audit_Version, Audit_Status, Audit_Action) VALUES
(
Name,
Audit_Current,
Audit_Datetime,
Audit_User,
Audit_Version,
Audit_Status,
Audit_Action
);
INSERT INTO Reportage_HIST (Name, Audit_Current, Audit_Datetime,Audit_User, Audit_Version, Audit_Status, Audit_Action) VALUES
(
Name,
Audit_Current,
Audit_Datetime,
Audit_User,
Audit_Version,
Audit_Status,
Audit_Action
);
END
Par contre, j'aimerai récupérer le code retour de la 1ere insertion et en fonction faire la 2eme ou non... (Je ne trouve rien sur le net seulement comment récupérer le code retour d'une requête via php..).

Eléphanteau du PHP | 13 Messages

13 mars 2010, 14:16

J'ai trouvé ceci, maintenant faut que je teste... Si ça inspire qq1

CREATE PROCEDURE pINSERT_Reportage(IN Name VARCHAR(25),IN Audit_Current VARCHAR(1),IN Audit_Datetime DATETIME, IN Audit_User VARCHAR(25), IN Audit_Version INT(8),IN Audit_Status VARCHAR(14), IN Audit_Action VARCHAR(6), OUT retour INT(2))
BEGIN
INSERT INTO Reportage (Name, Audit_Current,Audit_Datetime, Audit_User, Audit_Version, Audit_Status, Audit_Action) VALUES
(
Name,
Audit_Current,
Audit_Datetime,
Audit_User,
Audit_Version,
Audit_Status,
Audit_Action
);

SHOW count(*) ERRORS;
SELECT @@error_count;
set @retour=@@error_count;

if @retour =0 then
INSERT INTO Reportage_HIST (Name, Audit_Current, Audit_Datetime,Audit_User, Audit_Version, Audit_Status, Audit_Action) VALUES
(
Name,
Audit_Current,
Audit_Datetime,
Audit_User,
Audit_Version,
Audit_Status,
Audit_Action
);
SHOW count(*) ERRORS;
SELECT @@error_count;
set @retour=@@error_count;
end if;
END

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

16 mars 2010, 14:43

je n'ai pas de réponse à apporter mais c'est cool de partager tes trouvailles ici :pouce:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 13 Messages

17 mars 2010, 01:38

Yep je vois que ça n'inspire pas beaucoup de monde... Bon tant pis... je continuerai et peut être que je trouverai une façon plus élégante de les faire...
Je le laisse ouvert au cas où^^