Prob sur un moteur microsoft 6.5. :/ [SQL] - Programmation
Marsh Posté le 07-06-2002 à 13:46:57
tu peux essayer ta procédure en n'utilisant pas des tables temporaires, juste pour voir ce que ça fait ?
Marsh Posté le 07-06-2002 à 13:48:18
ReplyMarsh Posté le 07-06-2002 à 13:50:05
Reply
Marsh Posté le 07-06-2002 à 13:42:16
salut à tous,
and sysstat & 0xf = 4)
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'
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