| DraX |
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. :D |