Bonjour,
j'ai 4 requêtes insertion qui insèrent dans une table T des données à
partir
de cette même table T, voici mes requêtes :
1/ update T1 set Ch1= Ch5 where critere = 2
2/ update T1 set Ch2 = 'D' where Ch5 is not null
3/ update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
4/ update T1 set Ch2 = 'C' where Ch2 is null
Alors j'ai 2 champs Ch5 et Ch6 qui sont rensigné soit l'un soit l'autre,
je
les importe dans ma table comme ça, je doit mettre à jour mon champs 1
avec
la valeur (de l'un ou de l'autre selon qu'il soit renseigné ou non) et mon
champ 2 aussi en fonction de Ch5 (D) ou Ch6 (C)
en fait avec l'analyseur de requêtes, l'enchainement de mes 4 requêtes
marche (sur une table de 400000 lignes) mais si je fais appel à ces
requêtes
les unes derière les autres à partir d'un programme VB, ça plante et
j'aurais
"délai de connexion dépassé" !!
Par expérience, je sais que si j'arrive à mettre ce lot de requête dans
une
seule, cela va bien marcher mais je n'arrive pas à voir comment je peux le
faire !!
Merci de votre aide !
Bonjour,
j'ai 4 requêtes insertion qui insèrent dans une table T des données à
partir
de cette même table T, voici mes requêtes :
1/ update T1 set Ch1= Ch5 where critere = 2
2/ update T1 set Ch2 = 'D' where Ch5 is not null
3/ update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
4/ update T1 set Ch2 = 'C' where Ch2 is null
Alors j'ai 2 champs Ch5 et Ch6 qui sont rensigné soit l'un soit l'autre,
je
les importe dans ma table comme ça, je doit mettre à jour mon champs 1
avec
la valeur (de l'un ou de l'autre selon qu'il soit renseigné ou non) et mon
champ 2 aussi en fonction de Ch5 (D) ou Ch6 (C)
en fait avec l'analyseur de requêtes, l'enchainement de mes 4 requêtes
marche (sur une table de 400000 lignes) mais si je fais appel à ces
requêtes
les unes derière les autres à partir d'un programme VB, ça plante et
j'aurais
"délai de connexion dépassé" !!
Par expérience, je sais que si j'arrive à mettre ce lot de requête dans
une
seule, cela va bien marcher mais je n'arrive pas à voir comment je peux le
faire !!
Merci de votre aide !
Bonjour,
j'ai 4 requêtes insertion qui insèrent dans une table T des données à
partir
de cette même table T, voici mes requêtes :
1/ update T1 set Ch1= Ch5 where critere = 2
2/ update T1 set Ch2 = 'D' where Ch5 is not null
3/ update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
4/ update T1 set Ch2 = 'C' where Ch2 is null
Alors j'ai 2 champs Ch5 et Ch6 qui sont rensigné soit l'un soit l'autre,
je
les importe dans ma table comme ça, je doit mettre à jour mon champs 1
avec
la valeur (de l'un ou de l'autre selon qu'il soit renseigné ou non) et mon
champ 2 aussi en fonction de Ch5 (D) ou Ch6 (C)
en fait avec l'analyseur de requêtes, l'enchainement de mes 4 requêtes
marche (sur une table de 400000 lignes) mais si je fais appel à ces
requêtes
les unes derière les autres à partir d'un programme VB, ça plante et
j'aurais
"délai de connexion dépassé" !!
Par expérience, je sais que si j'arrive à mettre ce lot de requête dans
une
seule, cela va bien marcher mais je n'arrive pas à voir comment je peux le
faire !!
Merci de votre aide !
Bonjour,
j'ai 4 requêtes insertion qui insèrent dans une table T des données à partir
de cette même table T, voici mes requêtes :
1/ update T1 set Ch1= Ch5 where critere = 2
2/ update T1 set Ch2 = 'D' where Ch5 is not null
3/ update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
4/ update T1 set Ch2 = 'C' where Ch2 is null
Alors j'ai 2 champs Ch5 et Ch6 qui sont rensigné soit l'un soit l'autre, je
les importe dans ma table comme ça, je doit mettre à jour mon champs 1 avec
la valeur (de l'un ou de l'autre selon qu'il soit renseigné ou non) et mon
champ 2 aussi en fonction de Ch5 (D) ou Ch6 (C)
en fait avec l'analyseur de requêtes, l'enchainement de mes 4 requêtes
marche (sur une table de 400000 lignes) mais si je fais appel à ces requêtes
les unes derière les autres à partir d'un programme VB, ça plante et j'aurais
"délai de connexion dépassé" !!
Par expérience, je sais que si j'arrive à mettre ce lot de requête dans une
seule, cela va bien marcher mais je n'arrive pas à voir comment je peux le
faire !!
Merci de votre aide !
Bonjour,
j'ai 4 requêtes insertion qui insèrent dans une table T des données à partir
de cette même table T, voici mes requêtes :
1/ update T1 set Ch1= Ch5 where critere = 2
2/ update T1 set Ch2 = 'D' where Ch5 is not null
3/ update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
4/ update T1 set Ch2 = 'C' where Ch2 is null
Alors j'ai 2 champs Ch5 et Ch6 qui sont rensigné soit l'un soit l'autre, je
les importe dans ma table comme ça, je doit mettre à jour mon champs 1 avec
la valeur (de l'un ou de l'autre selon qu'il soit renseigné ou non) et mon
champ 2 aussi en fonction de Ch5 (D) ou Ch6 (C)
en fait avec l'analyseur de requêtes, l'enchainement de mes 4 requêtes
marche (sur une table de 400000 lignes) mais si je fais appel à ces requêtes
les unes derière les autres à partir d'un programme VB, ça plante et j'aurais
"délai de connexion dépassé" !!
Par expérience, je sais que si j'arrive à mettre ce lot de requête dans une
seule, cela va bien marcher mais je n'arrive pas à voir comment je peux le
faire !!
Merci de votre aide !
Bonjour,
j'ai 4 requêtes insertion qui insèrent dans une table T des données à partir
de cette même table T, voici mes requêtes :
1/ update T1 set Ch1= Ch5 where critere = 2
2/ update T1 set Ch2 = 'D' where Ch5 is not null
3/ update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
4/ update T1 set Ch2 = 'C' where Ch2 is null
Alors j'ai 2 champs Ch5 et Ch6 qui sont rensigné soit l'un soit l'autre, je
les importe dans ma table comme ça, je doit mettre à jour mon champs 1 avec
la valeur (de l'un ou de l'autre selon qu'il soit renseigné ou non) et mon
champ 2 aussi en fonction de Ch5 (D) ou Ch6 (C)
en fait avec l'analyseur de requêtes, l'enchainement de mes 4 requêtes
marche (sur une table de 400000 lignes) mais si je fais appel à ces requêtes
les unes derière les autres à partir d'un programme VB, ça plante et j'aurais
"délai de connexion dépassé" !!
Par expérience, je sais que si j'arrive à mettre ce lot de requête dans une
seule, cela va bien marcher mais je n'arrive pas à voir comment je peux le
faire !!
Merci de votre aide !
404 found a écrit:
> Bonjour,
> j'ai 4 requêtes insertion qui insèrent dans une table T des données à partir
> de cette même table T, voici mes requêtes :
>
> 1/ update T1 set Ch1= Ch5 where critere = 2
> 2/ update T1 set Ch2 = 'D' where Ch5 is not null
> 3/ update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
> 4/ update T1 set Ch2 = 'C' where Ch2 is null
>
> Alors j'ai 2 champs Ch5 et Ch6 qui sont rensigné soit l'un soit l'autre, je
> les importe dans ma table comme ça, je doit mettre à jour mon champs 1 avec
> la valeur (de l'un ou de l'autre selon qu'il soit renseigné ou non) et mon
> champ 2 aussi en fonction de Ch5 (D) ou Ch6 (C)
>
> en fait avec l'analyseur de requêtes, l'enchainement de mes 4 requêtes
> marche (sur une table de 400000 lignes) mais si je fais appel à ces requêtes
> les unes derière les autres à partir d'un programme VB, ça plante et j'aurais
> "délai de connexion dépassé" !!
>
> Par expérience, je sais que si j'arrive à mettre ce lot de requête dans une
> seule, cela va bien marcher mais je n'arrive pas à voir comment je peux le
> faire !!
Dans une procédure stockée ! C'est fait pour ça :
CREATE PROC P_4INSERT
BEGIN TRANSACTION
update T1 set Ch1= Ch5 where critere = 2
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'D' where Ch5 is not null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'C' where Ch2 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
COMMITE TRAN
RETURN
LBL_ERROR:
ROLLBACK
GO
du côté client, lancez simplement la commande suivante 'EXEC P_4INSERT' en mode
excute et non open.
Vous pouvez boen entendu passer des paramètres à votre procédure. Lisez le
tutorial que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/sqlserver/transactsql/
A +
>
> Merci de votre aide !
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
404 found a écrit:
> Bonjour,
> j'ai 4 requêtes insertion qui insèrent dans une table T des données à partir
> de cette même table T, voici mes requêtes :
>
> 1/ update T1 set Ch1= Ch5 where critere = 2
> 2/ update T1 set Ch2 = 'D' where Ch5 is not null
> 3/ update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
> 4/ update T1 set Ch2 = 'C' where Ch2 is null
>
> Alors j'ai 2 champs Ch5 et Ch6 qui sont rensigné soit l'un soit l'autre, je
> les importe dans ma table comme ça, je doit mettre à jour mon champs 1 avec
> la valeur (de l'un ou de l'autre selon qu'il soit renseigné ou non) et mon
> champ 2 aussi en fonction de Ch5 (D) ou Ch6 (C)
>
> en fait avec l'analyseur de requêtes, l'enchainement de mes 4 requêtes
> marche (sur une table de 400000 lignes) mais si je fais appel à ces requêtes
> les unes derière les autres à partir d'un programme VB, ça plante et j'aurais
> "délai de connexion dépassé" !!
>
> Par expérience, je sais que si j'arrive à mettre ce lot de requête dans une
> seule, cela va bien marcher mais je n'arrive pas à voir comment je peux le
> faire !!
Dans une procédure stockée ! C'est fait pour ça :
CREATE PROC P_4INSERT
BEGIN TRANSACTION
update T1 set Ch1= Ch5 where critere = 2
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'D' where Ch5 is not null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'C' where Ch2 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
COMMITE TRAN
RETURN
LBL_ERROR:
ROLLBACK
GO
du côté client, lancez simplement la commande suivante 'EXEC P_4INSERT' en mode
excute et non open.
Vous pouvez boen entendu passer des paramètres à votre procédure. Lisez le
tutorial que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/sqlserver/transactsql/
A +
>
> Merci de votre aide !
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
404 found a écrit:
> Bonjour,
> j'ai 4 requêtes insertion qui insèrent dans une table T des données à partir
> de cette même table T, voici mes requêtes :
>
> 1/ update T1 set Ch1= Ch5 where critere = 2
> 2/ update T1 set Ch2 = 'D' where Ch5 is not null
> 3/ update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
> 4/ update T1 set Ch2 = 'C' where Ch2 is null
>
> Alors j'ai 2 champs Ch5 et Ch6 qui sont rensigné soit l'un soit l'autre, je
> les importe dans ma table comme ça, je doit mettre à jour mon champs 1 avec
> la valeur (de l'un ou de l'autre selon qu'il soit renseigné ou non) et mon
> champ 2 aussi en fonction de Ch5 (D) ou Ch6 (C)
>
> en fait avec l'analyseur de requêtes, l'enchainement de mes 4 requêtes
> marche (sur une table de 400000 lignes) mais si je fais appel à ces requêtes
> les unes derière les autres à partir d'un programme VB, ça plante et j'aurais
> "délai de connexion dépassé" !!
>
> Par expérience, je sais que si j'arrive à mettre ce lot de requête dans une
> seule, cela va bien marcher mais je n'arrive pas à voir comment je peux le
> faire !!
Dans une procédure stockée ! C'est fait pour ça :
CREATE PROC P_4INSERT
BEGIN TRANSACTION
update T1 set Ch1= Ch5 where critere = 2
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'D' where Ch5 is not null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'C' where Ch2 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
COMMITE TRAN
RETURN
LBL_ERROR:
ROLLBACK
GO
du côté client, lancez simplement la commande suivante 'EXEC P_4INSERT' en mode
excute et non open.
Vous pouvez boen entendu passer des paramètres à votre procédure. Lisez le
tutorial que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/sqlserver/transactsql/
A +
>
> Merci de votre aide !
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
404 found a écrit:
> Bonjour,
> j'ai 4 requêtes insertion qui insèrent dans une table T des données à partir
> de cette même table T, voici mes requêtes :
>
> 1/ update T1 set Ch1= Ch5 where critere = 2
> 2/ update T1 set Ch2 = 'D' where Ch5 is not null
> 3/ update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
> 4/ update T1 set Ch2 = 'C' where Ch2 is null
>
> Alors j'ai 2 champs Ch5 et Ch6 qui sont rensigné soit l'un soit l'autre, je
> les importe dans ma table comme ça, je doit mettre à jour mon champs 1 avec
> la valeur (de l'un ou de l'autre selon qu'il soit renseigné ou non) et mon
> champ 2 aussi en fonction de Ch5 (D) ou Ch6 (C)
>
> en fait avec l'analyseur de requêtes, l'enchainement de mes 4 requêtes
> marche (sur une table de 400000 lignes) mais si je fais appel à ces requêtes
> les unes derière les autres à partir d'un programme VB, ça plante et j'aurais
> "délai de connexion dépassé" !!
>
> Par expérience, je sais que si j'arrive à mettre ce lot de requête dans une
> seule, cela va bien marcher mais je n'arrive pas à voir comment je peux le
> faire !!
Dans une procédure stockée ! C'est fait pour ça :
CREATE PROC P_4INSERT
BEGIN TRANSACTION
update T1 set Ch1= Ch5 where critere = 2
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'D' where Ch5 is not null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'C' where Ch2 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
COMMITE TRAN
RETURN
LBL_ERROR:
ROLLBACK
GO
du côté client, lancez simplement la commande suivante 'EXEC P_4INSERT' en mode
excute et non open.
Vous pouvez boen entendu passer des paramètres à votre procédure. Lisez le
tutorial que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/sqlserver/transactsql/
A +
>
> Merci de votre aide !
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
404 found a écrit:
> Bonjour,
> j'ai 4 requêtes insertion qui insèrent dans une table T des données à partir
> de cette même table T, voici mes requêtes :
>
> 1/ update T1 set Ch1= Ch5 where critere = 2
> 2/ update T1 set Ch2 = 'D' where Ch5 is not null
> 3/ update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
> 4/ update T1 set Ch2 = 'C' where Ch2 is null
>
> Alors j'ai 2 champs Ch5 et Ch6 qui sont rensigné soit l'un soit l'autre, je
> les importe dans ma table comme ça, je doit mettre à jour mon champs 1 avec
> la valeur (de l'un ou de l'autre selon qu'il soit renseigné ou non) et mon
> champ 2 aussi en fonction de Ch5 (D) ou Ch6 (C)
>
> en fait avec l'analyseur de requêtes, l'enchainement de mes 4 requêtes
> marche (sur une table de 400000 lignes) mais si je fais appel à ces requêtes
> les unes derière les autres à partir d'un programme VB, ça plante et j'aurais
> "délai de connexion dépassé" !!
>
> Par expérience, je sais que si j'arrive à mettre ce lot de requête dans une
> seule, cela va bien marcher mais je n'arrive pas à voir comment je peux le
> faire !!
Dans une procédure stockée ! C'est fait pour ça :
CREATE PROC P_4INSERT
BEGIN TRANSACTION
update T1 set Ch1= Ch5 where critere = 2
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'D' where Ch5 is not null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'C' where Ch2 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
COMMITE TRAN
RETURN
LBL_ERROR:
ROLLBACK
GO
du côté client, lancez simplement la commande suivante 'EXEC P_4INSERT' en mode
excute et non open.
Vous pouvez boen entendu passer des paramètres à votre procédure. Lisez le
tutorial que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/sqlserver/transactsql/
A +
>
> Merci de votre aide !
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
404 found a écrit:
> Bonjour,
> j'ai 4 requêtes insertion qui insèrent dans une table T des données à partir
> de cette même table T, voici mes requêtes :
>
> 1/ update T1 set Ch1= Ch5 where critere = 2
> 2/ update T1 set Ch2 = 'D' where Ch5 is not null
> 3/ update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
> 4/ update T1 set Ch2 = 'C' where Ch2 is null
>
> Alors j'ai 2 champs Ch5 et Ch6 qui sont rensigné soit l'un soit l'autre, je
> les importe dans ma table comme ça, je doit mettre à jour mon champs 1 avec
> la valeur (de l'un ou de l'autre selon qu'il soit renseigné ou non) et mon
> champ 2 aussi en fonction de Ch5 (D) ou Ch6 (C)
>
> en fait avec l'analyseur de requêtes, l'enchainement de mes 4 requêtes
> marche (sur une table de 400000 lignes) mais si je fais appel à ces requêtes
> les unes derière les autres à partir d'un programme VB, ça plante et j'aurais
> "délai de connexion dépassé" !!
>
> Par expérience, je sais que si j'arrive à mettre ce lot de requête dans une
> seule, cela va bien marcher mais je n'arrive pas à voir comment je peux le
> faire !!
Dans une procédure stockée ! C'est fait pour ça :
CREATE PROC P_4INSERT
BEGIN TRANSACTION
update T1 set Ch1= Ch5 where critere = 2
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'D' where Ch5 is not null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'C' where Ch2 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
COMMITE TRAN
RETURN
LBL_ERROR:
ROLLBACK
GO
du côté client, lancez simplement la commande suivante 'EXEC P_4INSERT' en mode
excute et non open.
Vous pouvez boen entendu passer des paramètres à votre procédure. Lisez le
tutorial que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/sqlserver/transactsql/
A +
>
> Merci de votre aide !
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
j'ai voulu mettre des paramètres et donc j'ai mis :
CREATE PROC P_4INSERT @LaTable varchar(50), @criteria int
AS
BEGIN TRANSACTION
update @LaTable set Ch1= Ch5 where critere = @Criteria
IF @@ERROR <> 0 GOTO LBL_ERROR
mais j'ai l'erreur : la variable @LaTable doit être déclaré !!
"Fred BROUARD" a écrit :
404 found a écrit:Bonjour,
j'ai 4 requêtes insertion qui insèrent dans une table T des données à partir
de cette même table T, voici mes requêtes :
1/ update T1 set Ch1= Ch5 where critere = 2
2/ update T1 set Ch2 = 'D' where Ch5 is not null
3/ update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
4/ update T1 set Ch2 = 'C' where Ch2 is null
Alors j'ai 2 champs Ch5 et Ch6 qui sont rensigné soit l'un soit l'autre, je
les importe dans ma table comme ça, je doit mettre à jour mon champs 1 avec
la valeur (de l'un ou de l'autre selon qu'il soit renseigné ou non) et mon
champ 2 aussi en fonction de Ch5 (D) ou Ch6 (C)
en fait avec l'analyseur de requêtes, l'enchainement de mes 4 requêtes
marche (sur une table de 400000 lignes) mais si je fais appel à ces requêtes
les unes derière les autres à partir d'un programme VB, ça plante et j'aurais
"délai de connexion dépassé" !!
Par expérience, je sais que si j'arrive à mettre ce lot de requête dans une
seule, cela va bien marcher mais je n'arrive pas à voir comment je peux le
faire !!
Dans une procédure stockée ! C'est fait pour ça :
CREATE PROC P_4INSERT
BEGIN TRANSACTION
update T1 set Ch1= Ch5 where critere = 2
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'D' where Ch5 is not null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'C' where Ch2 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
COMMITE TRAN
RETURN
LBL_ERROR:
ROLLBACK
GO
du côté client, lancez simplement la commande suivante 'EXEC P_4INSERT' en mode
excute et non open.
Vous pouvez boen entendu passer des paramètres à votre procédure. Lisez le
tutorial que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/sqlserver/transactsql/
A +Merci de votre aide !
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
j'ai voulu mettre des paramètres et donc j'ai mis :
CREATE PROC P_4INSERT @LaTable varchar(50), @criteria int
AS
BEGIN TRANSACTION
update @LaTable set Ch1= Ch5 where critere = @Criteria
IF @@ERROR <> 0 GOTO LBL_ERROR
mais j'ai l'erreur : la variable @LaTable doit être déclaré !!
"Fred BROUARD" a écrit :
404 found a écrit:
Bonjour,
j'ai 4 requêtes insertion qui insèrent dans une table T des données à partir
de cette même table T, voici mes requêtes :
1/ update T1 set Ch1= Ch5 where critere = 2
2/ update T1 set Ch2 = 'D' where Ch5 is not null
3/ update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
4/ update T1 set Ch2 = 'C' where Ch2 is null
Alors j'ai 2 champs Ch5 et Ch6 qui sont rensigné soit l'un soit l'autre, je
les importe dans ma table comme ça, je doit mettre à jour mon champs 1 avec
la valeur (de l'un ou de l'autre selon qu'il soit renseigné ou non) et mon
champ 2 aussi en fonction de Ch5 (D) ou Ch6 (C)
en fait avec l'analyseur de requêtes, l'enchainement de mes 4 requêtes
marche (sur une table de 400000 lignes) mais si je fais appel à ces requêtes
les unes derière les autres à partir d'un programme VB, ça plante et j'aurais
"délai de connexion dépassé" !!
Par expérience, je sais que si j'arrive à mettre ce lot de requête dans une
seule, cela va bien marcher mais je n'arrive pas à voir comment je peux le
faire !!
Dans une procédure stockée ! C'est fait pour ça :
CREATE PROC P_4INSERT
BEGIN TRANSACTION
update T1 set Ch1= Ch5 where critere = 2
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'D' where Ch5 is not null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'C' where Ch2 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
COMMITE TRAN
RETURN
LBL_ERROR:
ROLLBACK
GO
du côté client, lancez simplement la commande suivante 'EXEC P_4INSERT' en mode
excute et non open.
Vous pouvez boen entendu passer des paramètres à votre procédure. Lisez le
tutorial que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/sqlserver/transactsql/
A +
Merci de votre aide !
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
j'ai voulu mettre des paramètres et donc j'ai mis :
CREATE PROC P_4INSERT @LaTable varchar(50), @criteria int
AS
BEGIN TRANSACTION
update @LaTable set Ch1= Ch5 where critere = @Criteria
IF @@ERROR <> 0 GOTO LBL_ERROR
mais j'ai l'erreur : la variable @LaTable doit être déclaré !!
"Fred BROUARD" a écrit :
404 found a écrit:Bonjour,
j'ai 4 requêtes insertion qui insèrent dans une table T des données à partir
de cette même table T, voici mes requêtes :
1/ update T1 set Ch1= Ch5 where critere = 2
2/ update T1 set Ch2 = 'D' where Ch5 is not null
3/ update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
4/ update T1 set Ch2 = 'C' where Ch2 is null
Alors j'ai 2 champs Ch5 et Ch6 qui sont rensigné soit l'un soit l'autre, je
les importe dans ma table comme ça, je doit mettre à jour mon champs 1 avec
la valeur (de l'un ou de l'autre selon qu'il soit renseigné ou non) et mon
champ 2 aussi en fonction de Ch5 (D) ou Ch6 (C)
en fait avec l'analyseur de requêtes, l'enchainement de mes 4 requêtes
marche (sur une table de 400000 lignes) mais si je fais appel à ces requêtes
les unes derière les autres à partir d'un programme VB, ça plante et j'aurais
"délai de connexion dépassé" !!
Par expérience, je sais que si j'arrive à mettre ce lot de requête dans une
seule, cela va bien marcher mais je n'arrive pas à voir comment je peux le
faire !!
Dans une procédure stockée ! C'est fait pour ça :
CREATE PROC P_4INSERT
BEGIN TRANSACTION
update T1 set Ch1= Ch5 where critere = 2
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'D' where Ch5 is not null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch1 = Ch6 where critere = 2 and Ch1 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
update T1 set Ch2 = 'C' where Ch2 is null
IF @@ERROR <> 0 GOTO LBL_ERROR
COMMITE TRAN
RETURN
LBL_ERROR:
ROLLBACK
GO
du côté client, lancez simplement la commande suivante 'EXEC P_4INSERT' en mode
excute et non open.
Vous pouvez boen entendu passer des paramètres à votre procédure. Lisez le
tutorial que j'ai écrit à ce sujet :
http://sqlpro.developpez.com/cours/sqlserver/transactsql/
A +Merci de votre aide !
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************