Création de proc stock MYSQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Création de proc stock MYSQL

Re: Création de proc stock MYSQL

par jeanBap » 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ù^^

Re: Création de proc stock MYSQL

par Truc » 16 mars 2010, 14:43

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

Re: Création de proc stock MYSQL

par jeanBap » 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

Re: Création de proc stock MYSQL

par jeanBap » 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..).

Création de proc stock MYSQL

par JeanBap » 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