salut à tous,
 
j'ai un soucis avec une proc stock sur un moteur 6.5.
à la premiere execution, je me tappe ce message d'erreur:
 
[Microsoft][ODBC SQL Server Driver][SQL Server]Internal error -- Unable to open table at query execution time.
 
à la deuxieme éxécution, ça passe.
malgré qlq recherche, il ne semble pas que ça soit un prob krosoft. serait ce un truc dans ma proc?
 
la voici:
 
if exists (select * from sysobjects where id = object_id('dbo.sp_Consolidation'
 and sysstat & 0xf = 4)
 drop procedure dbo.sp_Consolidation
GO
 
/****** Objet:  procédure stockée dbo.sp_Consolidation    Date de script: 07/06/2002 9:57:11 ******/
/****** Objet:  procédure stockée dbo.sp_Consolidation    Date de script: 23/05/2002 10:22:01 ******/
/****** Objet:  procédure stockée dbo.sp_Consolidation    Date de script: 16/05/2002 11:38:30 ******/
/****** Objet:  procédure stockée dbo.sp_Consolidation    Date de script: 24/04/2002 17:02:27 ******/
/****** Objet:  procédure stockée dbo.sp_Consolidation    Date de script: 10/04/2002 11:42:03 ******/
/****** Objet:  procédure stockée dbo.sp_Consolidation    Date de script: 05/03/01 16:29:36 ******/
 
CREATE PROCEDURE sp_Consolidation
 @Session	smallint,
 @IDSource int
AS
 
 IF @IDSource = 3
 
  BEGIN
 
 	SELECT	@IDSource = 1
  END  
 IF @IDSource = 4
  BEGIN
 
 	SELECT	@IDSource = 2
  END  
 
 
 
 EXEC sp_MajTraitement 1, 2
 
 --- Clear des tables de traitement
 DELETE TB_Consolidation_LstPortfolio
 DELETE TB_Consolidation_Tmp_Action
 DELETE TB_Consolidation_Tmp_Emetteur
 DELETE TB_Consolidation_Tmp_Indice
 DELETE TB_Consolidation_Tmp_Maturite
 
 --- Mise à jour des répartitions MSCI des instruments associés à des indices
 EXEC sp_Inst_RepartMSCI @Session , @IDSource  
 
 
 --- Remplissage des tables temporaires de collection
 INSERT INTO TB_Consolidation_LstPortfolio
 SELECT DISTINCT	rtrim(CodePortfolio),
   rtrim(IsOPCVM),
   CoefDetention
 FROM	HistoPosRisk
 
 WHERE	IsOPCVM Is Not Null
  And	IDSession = @Session  
  And	IdentifiantSource = @IDSource  
 
 ORDER BY rtrim(CodePortfolio)
 
 --- Traitement pour les Portfeuilles  
 
 CREATE TABLE #LstCodePortfolio (Codeportfolio varchar(12))
 
 INSERT INTO #LstCodePortfolio  
 SELECT DISTINCT CodePortfolio
 FROM	TB_Consolidation_LstPortfolio
 
 WHERE	CodePortfolio in (select distinct CodePortfolio from PortfolioStatus)
 ORDER BY CodePortfolio
 
 DECLARE	@CodeP char(12)
 
 DECLARE cursPort INSENSITIVE CURSOR FOR SELECT CodePortfolio FROM #LstCodePortfolio
 OPEN cursPort  
 FETCH NEXT FROM cursPort INTO @CodeP
 
 WHILE @@FETCH_STATUS = 0
 BEGIN
 	EXEC sp_Conso_Desempile @CodeP
 
 	EXEC sp_Conso_FabriqTblConso_A @CodeP, @Session, @IDSource
 	EXEC sp_Conso_FabriqTblConso_E @CodeP, @Session, @IDSource
 	EXEC sp_Conso_FabriqTblConso_M @CodeP, @Session, @IDSource
 
 	FETCH NEXT FROM cursPort INTO @CodeP
  END
 CLOSE cursPort  
 
 DEALLOCATE cursPort  
 
 
 --- Traitement pour les Indices
 DELETE #LstCodePortfolio
 
 INSERT INTO #LstCodePortfolio  
 SELECT DISTINCT CodePortfolio
 
 FROM	TB_Consolidation_LstPortfolio
 
 WHERE	CodePortfolio not in (select distinct CodePortfolio from PortfolioStatus)
 ORDER BY CodePortfolio
 
 DECLARE cursBench INSENSITIVE CURSOR FOR SELECT CodePortfolio FROM #LstCodePortfolio
 OPEN cursBench  
 
 FETCH NEXT FROM cursBench INTO @CodeP
 
 WHILE @@FETCH_STATUS = 0
 BEGIN
 	EXEC sp_Conso_Desempile @CodeP
 	EXEC sp_Conso_FabriqTblConso_A @CodeP, @Session, @IDSource
 	EXEC sp_Conso_FabriqTblConso_I @CodeP, @Session, @IDSource
 
 	FETCH NEXT FROM cursBench INTO @CodeP
  END
 CLOSE cursBench  
 
 DEALLOCATE cursBench  
 
 
 EXEC sp_Conso_SaveData_A @Session, @IDSource
 EXEC sp_Conso_SaveData_E @Session, @IDSource
 EXEC sp_Conso_SaveData_I @Session, @IDSource
 EXEC sp_Conso_SaveData_M @Session, @IDSource
 
 
 --- Suppression de la table temporaire
 DROP TABLE #LstCodePortfolio
 
        --Historisation
 DELETE	TB_HistoConsoIndice  
 
 WHERE	IdentifiantSource = @IdSource
 AND Idsession= @Session
 
 INSERT INTO TB_HistoConsoIndice  
 SELECT * FROM TB_ConsoIndice  
 WHERE IdentifiantSource = @IdSource
 AND Idsession= @Session
 
 
 DELETE TB_ConsoIndice  
 
 DELETE	TB_HistoConsoEmetteur  
 WHERE	IdentifiantSource = @IdSource
 AND Idsession= @Session
 
 INSERT INTO TB_HistoConsoEmetteur
 SELECT * FROM TB_ConsoEmetteur  
 WHERE IdentifiantSource = @IdSource
 AND Idsession= @Session
 
 DELETE TB_ConsoEmetteur  
 
 DELETE	TB_HistoConsoAction  
 WHERE	IdentifiantSource = @IdSource
 
 AND Idsession= @Session
 
 
 INSERT INTO TB_HistoConsoAction  
 SELECT * FROM TB_ConsoAction  
 WHERE IdentifiantSource = @IdSource
 AND Idsession= @Session
 
 DELETE TB_ConsoAction  
 
 EXEC sp_MajTraitement 0, 2
 
 
 
 
GO
 
GRANT  EXECUTE  ON dbo.sp_Consolidation  TO miseajour
GO
 
Merci pour votre aide. 
 
 
 ---------------
			
 | Un malentendu du cul | boum boum ! | La roulette