Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Vuillermet Jacques
"11 millions de fois" c'est justement le signal qui doit te faire dire : "Pas de boucle !". Sous peine de temps d'exécution pénible.
Si tu ne peux vraiment vraiment vraiment vraiment vraiment vraiment vraiment pas faire autrement alors vois l'instruction WHILE dans doc.
Jacques.
"Kigner" a écrit dans le message de news: 210c901c459c5$7faa8ed0$ Bien le bonjour ! qui sais comment réaliser un "LOOP" en SQL2000 afin de réaliser une requête 11 millions de fois ???
par avance merci! salutations, Daniel
"11 millions de fois" c'est justement le signal qui doit te faire dire :
"Pas de boucle !".
Sous peine de temps d'exécution pénible.
Si tu ne peux vraiment vraiment vraiment vraiment vraiment vraiment vraiment
pas faire autrement alors vois l'instruction WHILE dans doc.
Jacques.
"Kigner" <anonymous@discussions.microsoft.com> a écrit dans le message de
news: 210c901c459c5$7faa8ed0$a001280a@phx.gbl...
Bien le bonjour !
qui sais comment réaliser un "LOOP" en SQL2000
afin de réaliser une requête 11 millions de fois ???
"11 millions de fois" c'est justement le signal qui doit te faire dire : "Pas de boucle !". Sous peine de temps d'exécution pénible.
Si tu ne peux vraiment vraiment vraiment vraiment vraiment vraiment vraiment pas faire autrement alors vois l'instruction WHILE dans doc.
Jacques.
"Kigner" a écrit dans le message de news: 210c901c459c5$7faa8ed0$ Bien le bonjour ! qui sais comment réaliser un "LOOP" en SQL2000 afin de réaliser une requête 11 millions de fois ???
par avance merci! salutations, Daniel
Merci Jacques... C'est vrai que c'est paradoxal de devoir executer une commande 11 millions de fois...
Faudrait-il executer ma requête avec un cursor ?
voici ma requete:
CREATE PROCEDURE usp_clean_pemontag AS DECLARE @execstr_del varchar(100),@deleted_isn numeric(10)
DECLARE commandes CURSOR FOR select top 1 pemontag_isn from pemontag_tvx3 OPEN commandes
FETCH commandes INTO @deleted_isn
SET @execstr_del='delete from pemontag where pemontag_isn='+convert(varchar,@deleted_isn) begin TRAN EXEC(@execstr_del) commit TRAN --PRINT CHAR(13)+'status 1: '+convert (varchar,@@FETCH_STATUS) CLOSE commandes DEALLOCATE commandes
SET @execstr_del='delete from pemontag_tvx3 where pemontag_isn='+convert(varchar,@deleted_isn) --PRINT CHAR(13)+@execstr_del
Merci Jacques... C'est vrai que c'est paradoxal de devoir
executer une commande 11 millions de fois...
Faudrait-il executer ma requête avec un cursor ?
voici ma requete:
CREATE PROCEDURE usp_clean_pemontag AS
DECLARE @execstr_del varchar(100),@deleted_isn numeric(10)
DECLARE commandes CURSOR FOR
select top 1 pemontag_isn
from pemontag_tvx3
OPEN commandes
FETCH commandes INTO @deleted_isn
SET @execstr_del='delete from pemontag where
pemontag_isn='+convert(varchar,@deleted_isn)
begin TRAN
EXEC(@execstr_del)
commit TRAN
--PRINT CHAR(13)+'status 1: '+convert
(varchar,@@FETCH_STATUS)
CLOSE commandes
DEALLOCATE commandes
SET @execstr_del='delete from pemontag_tvx3 where
pemontag_isn='+convert(varchar,@deleted_isn)
--PRINT CHAR(13)+@execstr_del
Merci Jacques... C'est vrai que c'est paradoxal de devoir executer une commande 11 millions de fois...
Faudrait-il executer ma requête avec un cursor ?
voici ma requete:
CREATE PROCEDURE usp_clean_pemontag AS DECLARE @execstr_del varchar(100),@deleted_isn numeric(10)
DECLARE commandes CURSOR FOR select top 1 pemontag_isn from pemontag_tvx3 OPEN commandes
FETCH commandes INTO @deleted_isn
SET @execstr_del='delete from pemontag where pemontag_isn='+convert(varchar,@deleted_isn) begin TRAN EXEC(@execstr_del) commit TRAN --PRINT CHAR(13)+'status 1: '+convert (varchar,@@FETCH_STATUS) CLOSE commandes DEALLOCATE commandes
SET @execstr_del='delete from pemontag_tvx3 where pemontag_isn='+convert(varchar,@deleted_isn) --PRINT CHAR(13)+@execstr_del
Beaucoup d'horreur dans ce code : 1) pas besoin d'utiliser un curseur 2) clause top sans order by 3) gestion de transaction plus que hasardeuse
Et a mon avis pas besoin d'exécuter cela 11 millions de fois en imbriauant les requêtes... Que veut tu faire exactement ???
voici le code corrigé :
CREATE PROCEDURE usp_clean_pemontag AS
DECLARE @deleted_isn numeric(10)
BEGIN TRANSACTION
SELECT TOP 1 @deleted_isn = pemontag_isn FROM pemontag_tvx3 ORDER BY 1 IF @@ERROR <> 0 GOTO LBL_ERROR
DELETE FROM pemontag WHERE pemontag_isn = @deleted_isn IF @@ERROR <> 0 GOTO LBL_ERROR
DELETE FROM pemontag_tvx3 WHERE pemontag_isn = @deleted_isn IF @@ERROR <> 0 GOTO LBL_ERROR
SELECT @deleted_isn
COMMIT TRANSACTION
RETURN
LBL_ERROR:
ROLLBACK TRANSACTION
GO
A +
PS : il me parait nécessaire que tu te forme à Transact SQL... Pour débuter : http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQL.html
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
a écrit:
Merci Jacques... C'est vrai que c'est paradoxal de devoir executer une commande 11 millions de fois...
Faudrait-il executer ma requête avec un cursor ?
voici ma requete:
CREATE PROCEDURE usp_clean_pemontag AS DECLARE @execstr_del varchar(100),@deleted_isn numeric(10)
DECLARE commandes CURSOR FOR select top 1 pemontag_isn from pemontag_tvx3 OPEN commandes
FETCH commandes INTO @deleted_isn
SET @execstr_del='delete from pemontag where pemontag_isn='+convert(varchar,@deleted_isn) begin TRAN EXEC(@execstr_del) commit TRAN --PRINT CHAR(13)+'status 1: '+convert (varchar,@@FETCH_STATUS) CLOSE commandes DEALLOCATE commandes
SET @execstr_del='delete from pemontag_tvx3 where pemontag_isn='+convert(varchar,@deleted_isn) --PRINT CHAR(13)+@execstr_del
Beaucoup d'horreur dans ce code :
1) pas besoin d'utiliser un curseur
2) clause top sans order by
3) gestion de transaction plus que hasardeuse
Et a mon avis pas besoin d'exécuter cela 11 millions de fois en imbriauant les requêtes... Que veut tu faire exactement ???
voici le code corrigé :
CREATE PROCEDURE usp_clean_pemontag
AS
DECLARE @deleted_isn numeric(10)
BEGIN TRANSACTION
SELECT TOP 1 @deleted_isn = pemontag_isn
FROM pemontag_tvx3
ORDER BY 1
IF @@ERROR <> 0
GOTO LBL_ERROR
DELETE FROM pemontag
WHERE pemontag_isn = @deleted_isn
IF @@ERROR <> 0
GOTO LBL_ERROR
DELETE FROM pemontag_tvx3
WHERE pemontag_isn = @deleted_isn
IF @@ERROR <> 0
GOTO LBL_ERROR
SELECT @deleted_isn
COMMIT TRANSACTION
RETURN
LBL_ERROR:
ROLLBACK TRANSACTION
GO
A +
PS : il me parait nécessaire que tu te forme à Transact SQL...
Pour débuter : http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQL.html
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
anonymous@discussions.microsoft.com a écrit:
Merci Jacques... C'est vrai que c'est paradoxal de devoir
executer une commande 11 millions de fois...
Faudrait-il executer ma requête avec un cursor ?
voici ma requete:
CREATE PROCEDURE usp_clean_pemontag AS
DECLARE @execstr_del varchar(100),@deleted_isn numeric(10)
DECLARE commandes CURSOR FOR
select top 1 pemontag_isn
from pemontag_tvx3
OPEN commandes
FETCH commandes INTO @deleted_isn
SET @execstr_del='delete from pemontag where
pemontag_isn='+convert(varchar,@deleted_isn)
begin TRAN
EXEC(@execstr_del)
commit TRAN
--PRINT CHAR(13)+'status 1: '+convert
(varchar,@@FETCH_STATUS)
CLOSE commandes
DEALLOCATE commandes
SET @execstr_del='delete from pemontag_tvx3 where
pemontag_isn='+convert(varchar,@deleted_isn)
--PRINT CHAR(13)+@execstr_del
Beaucoup d'horreur dans ce code : 1) pas besoin d'utiliser un curseur 2) clause top sans order by 3) gestion de transaction plus que hasardeuse
Et a mon avis pas besoin d'exécuter cela 11 millions de fois en imbriauant les requêtes... Que veut tu faire exactement ???
voici le code corrigé :
CREATE PROCEDURE usp_clean_pemontag AS
DECLARE @deleted_isn numeric(10)
BEGIN TRANSACTION
SELECT TOP 1 @deleted_isn = pemontag_isn FROM pemontag_tvx3 ORDER BY 1 IF @@ERROR <> 0 GOTO LBL_ERROR
DELETE FROM pemontag WHERE pemontag_isn = @deleted_isn IF @@ERROR <> 0 GOTO LBL_ERROR
DELETE FROM pemontag_tvx3 WHERE pemontag_isn = @deleted_isn IF @@ERROR <> 0 GOTO LBL_ERROR
SELECT @deleted_isn
COMMIT TRANSACTION
RETURN
LBL_ERROR:
ROLLBACK TRANSACTION
GO
A +
PS : il me parait nécessaire que tu te forme à Transact SQL... Pour débuter : http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQL.html
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
a écrit:
Merci Jacques... C'est vrai que c'est paradoxal de devoir executer une commande 11 millions de fois...
Faudrait-il executer ma requête avec un cursor ?
voici ma requete:
CREATE PROCEDURE usp_clean_pemontag AS DECLARE @execstr_del varchar(100),@deleted_isn numeric(10)
DECLARE commandes CURSOR FOR select top 1 pemontag_isn from pemontag_tvx3 OPEN commandes
FETCH commandes INTO @deleted_isn
SET @execstr_del='delete from pemontag where pemontag_isn='+convert(varchar,@deleted_isn) begin TRAN EXEC(@execstr_del) commit TRAN --PRINT CHAR(13)+'status 1: '+convert (varchar,@@FETCH_STATUS) CLOSE commandes DEALLOCATE commandes
SET @execstr_del='delete from pemontag_tvx3 where pemontag_isn='+convert(varchar,@deleted_isn) --PRINT CHAR(13)+@execstr_del
Beaucoup d'horreur dans ce code : 1) pas besoin d'utiliser un curseur 2) clause top sans order by 3) gestion de transaction plus que hasardeuse
Et a mon avis pas besoin d'exécuter cela 11 millions de fois en imbriauant les requêtes... Que veut tu faire exactement ???
voici le code corrigé :
CREATE PROCEDURE usp_clean_pemontag AS
DECLARE @deleted_isn numeric(10)
BEGIN TRANSACTION
SELECT TOP 1 @deleted_isn = pemontag_isn FROM pemontag_tvx3 ORDER BY 1 IF @@ERROR <> 0 GOTO LBL_ERROR
DELETE FROM pemontag WHERE pemontag_isn = @deleted_isn IF @@ERROR <> 0 GOTO LBL_ERROR
DELETE FROM pemontag_tvx3 WHERE pemontag_isn = @deleted_isn IF @@ERROR <> 0 GOTO LBL_ERROR
SELECT @deleted_isn
COMMIT TRANSACTION
RETURN
LBL_ERROR:
ROLLBACK TRANSACTION
GO
A +
PS : il me parait nécessaire que tu te forme à Transact SQL... Pour débuter : http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQL.html
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
a écrit:
Merci Jacques... C'est vrai que c'est paradoxal de devoir executer une commande 11 millions de fois...
Faudrait-il executer ma requête avec un cursor ?
voici ma requete:
CREATE PROCEDURE usp_clean_pemontag AS DECLARE @execstr_del varchar(100),@deleted_isn numeric(10)
DECLARE commandes CURSOR FOR select top 1 pemontag_isn from pemontag_tvx3 OPEN commandes
FETCH commandes INTO @deleted_isn
SET @execstr_del='delete from pemontag where pemontag_isn='+convert(varchar,@deleted_isn) begin TRAN EXEC(@execstr_del) commit TRAN --PRINT CHAR(13)+'status 1: '+convert (varchar,@@FETCH_STATUS) CLOSE commandes DEALLOCATE commandes
SET @execstr_del='delete from pemontag_tvx3 where pemontag_isn='+convert(varchar,@deleted_isn) --PRINT CHAR(13)+@execstr_del
Beaucoup d'horreur dans ce code :
1) pas besoin d'utiliser un curseur
2) clause top sans order by
3) gestion de transaction plus que hasardeuse
Et a mon avis pas besoin d'exécuter cela 11 millions de fois en imbriauant les requêtes... Que veut tu faire exactement ???
voici le code corrigé :
CREATE PROCEDURE usp_clean_pemontag
AS
DECLARE @deleted_isn numeric(10)
BEGIN TRANSACTION
SELECT TOP 1 @deleted_isn = pemontag_isn
FROM pemontag_tvx3
ORDER BY 1
IF @@ERROR <> 0
GOTO LBL_ERROR
DELETE FROM pemontag
WHERE pemontag_isn = @deleted_isn
IF @@ERROR <> 0
GOTO LBL_ERROR
DELETE FROM pemontag_tvx3
WHERE pemontag_isn = @deleted_isn
IF @@ERROR <> 0
GOTO LBL_ERROR
SELECT @deleted_isn
COMMIT TRANSACTION
RETURN
LBL_ERROR:
ROLLBACK TRANSACTION
GO
A +
PS : il me parait nécessaire que tu te forme à Transact SQL...
Pour débuter : http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQL.html
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
anonymous@discussions.microsoft.com a écrit:
Merci Jacques... C'est vrai que c'est paradoxal de devoir
executer une commande 11 millions de fois...
Faudrait-il executer ma requête avec un cursor ?
voici ma requete:
CREATE PROCEDURE usp_clean_pemontag AS
DECLARE @execstr_del varchar(100),@deleted_isn numeric(10)
DECLARE commandes CURSOR FOR
select top 1 pemontag_isn
from pemontag_tvx3
OPEN commandes
FETCH commandes INTO @deleted_isn
SET @execstr_del='delete from pemontag where
pemontag_isn='+convert(varchar,@deleted_isn)
begin TRAN
EXEC(@execstr_del)
commit TRAN
--PRINT CHAR(13)+'status 1: '+convert
(varchar,@@FETCH_STATUS)
CLOSE commandes
DEALLOCATE commandes
SET @execstr_del='delete from pemontag_tvx3 where
pemontag_isn='+convert(varchar,@deleted_isn)
--PRINT CHAR(13)+@execstr_del
Beaucoup d'horreur dans ce code : 1) pas besoin d'utiliser un curseur 2) clause top sans order by 3) gestion de transaction plus que hasardeuse
Et a mon avis pas besoin d'exécuter cela 11 millions de fois en imbriauant les requêtes... Que veut tu faire exactement ???
voici le code corrigé :
CREATE PROCEDURE usp_clean_pemontag AS
DECLARE @deleted_isn numeric(10)
BEGIN TRANSACTION
SELECT TOP 1 @deleted_isn = pemontag_isn FROM pemontag_tvx3 ORDER BY 1 IF @@ERROR <> 0 GOTO LBL_ERROR
DELETE FROM pemontag WHERE pemontag_isn = @deleted_isn IF @@ERROR <> 0 GOTO LBL_ERROR
DELETE FROM pemontag_tvx3 WHERE pemontag_isn = @deleted_isn IF @@ERROR <> 0 GOTO LBL_ERROR
SELECT @deleted_isn
COMMIT TRANSACTION
RETURN
LBL_ERROR:
ROLLBACK TRANSACTION
GO
A +
PS : il me parait nécessaire que tu te forme à Transact SQL... Pour débuter : http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQL.html
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
a écrit:
Merci Jacques... C'est vrai que c'est paradoxal de devoir executer une commande 11 millions de fois...
Faudrait-il executer ma requête avec un cursor ?
voici ma requete:
CREATE PROCEDURE usp_clean_pemontag AS DECLARE @execstr_del varchar(100),@deleted_isn numeric(10)
DECLARE commandes CURSOR FOR select top 1 pemontag_isn from pemontag_tvx3 OPEN commandes
FETCH commandes INTO @deleted_isn
SET @execstr_del='delete from pemontag where pemontag_isn='+convert(varchar,@deleted_isn) begin TRAN EXEC(@execstr_del) commit TRAN --PRINT CHAR(13)+'status 1: '+convert (varchar,@@FETCH_STATUS) CLOSE commandes DEALLOCATE commandes
SET @execstr_del='delete from pemontag_tvx3 where pemontag_isn='+convert(varchar,@deleted_isn) --PRINT CHAR(13)+@execstr_del