Bonjour,
Dans une procédure stockée j'utilise 2 curseurs.
Lorsque dans une vue créée dans le deuxième j'appelle des variables définies dans le 1er un message d'erreur me demande de les déclarer alors quelles le sont bien au début de la procédure.
En revanche lorsque dans le 2èm curseur j'affiche une variable, cela marche bien!!!
voici le code:
CREATE PROCEDURE [test] AS
DECLARE @agent varchar(20)
DECLARE @equipe varchar(20)
DECLARE @date varchar(20)
DECLARE @machine varchar(20)
DECLARE curseur1 CURSOR FOR
SELECT DISTINCT agent, equipe,left(dateheure, 8) FROM tracabilite WHERE codescan like 'FP%'
OPEN curseur1
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH curseur1 INTO @agent,@equipe,@date
CLOSE curseur1
DECLARE curseur2 CURSOR FOR
SELECT DISTINCT right(codescan,3) FROM tracabilite WHERE Agent = @agent and Equipe = @equipe and left(dateheure,8) like @date and right(codescan,3) NOT LIKE 'PP%' and right(codescan,3) NOT LIKE 'FP%'
OPEN curseur2
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH curseur2 INTO @machine
IF exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[essai]') and OBJECTPROPERTY(id, N'IsView') = 1)
DROP VIEW [dbo].[essai]
PRINT@agent
EXEC ('CREATE VIEW essai AS SELECT * FROM tracabilite where equipe = @equipe and agent = @agent and dateheure = @date and right(codescan,3) like @machine ')
END
CLOSE curseur2
END
GO
Merci d'avance pour votre aide!!!
Partager