Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Erreur: Msg 137 .. Must declare the scalar variable "@ldDateDu".

8 réponses
Avatar
EmanuelL
Bonjour à Touis,

L'exécution des codes cidessous me donnent l'erreur :
"Msg 137, Niveau 15, État 2, Ligne 17
Must declare the scalar variable "@ldDateDu"."

Avez-vous une idée?

Merci d'avance. :'(


USE [FiducDB1];
GO

IF OBJECT_ID ( 'dbo.usp_CreateMinoMajo', 'P' ) IS NOT NULL
DROP PROCEDURE dbo.usp_CreateMinoMajo;
GO

CREATE PROCEDURE dbo.usp_CreateMinoMajo
-- '2008-01-01' AND '2008-12-31'
@ldDateDu datetime,
@ldDateAu datetime
AS
--- Suppression de la table temporaire ---
IF OBJECT_ID(N'tempdb..#tmp_MinMaj', N'U') IS NOT NULL
DROP TABLE #tmp_MinMaj ;
GO

--- Extraction de mino&majo et création de la table temporaire
#tmp_MinMaj ---
SELECT
FP.[FAK_NR] AS No_Facture
,PJ.[FIRMA_NR] AS No_Ste
,FP.[PROJEKT_NR] AS No_Client
,PJ.[BEZEICHNUNG] AS Nom_Client
,CASE WHEN FP.[BETRAGNETTO] < 0 THEN FP.[BETRAGNETTO] ELSE 0 END AS
Mino
,CASE WHEN FP.[BETRAGNETTO] > 0 THEN FP.[BETRAGNETTO] ELSE 0 END AS
Majo
,CONVERT(VARCHAR(11), FK.[FAKDATUM], 103) AS Date_Facture
,CONVERT(VARCHAR(11), FK.[ABRDATUM], 103) AS Date_Rapport
INTO #tmp_MinMaj
FROM [Hono1].[dbo].[FAKPOS] AS FP
JOIN [Hono1].[dbo].[FAKKOPF] AS FK
ON FK.[FAK_NR] = FP.[FAK_NR]
AND FK.[FAKDATUM] BETWEEN @ldDateDu AND @ldDateAu
JOIN [Hono1].[dbo].[PROJEKT] AS PJ
ON PJ.[PROJEKT_NR] = FP.[PROJEKT_NR]
WHERE FP.[POSTYP_SCNR] = 9
AND FP.[CODE_NR] = 9;
GO

--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org

8 réponses

Avatar
Michel LEVY
Bonjour Emanuel,

un petit Declare de tes variables, peut-être ;-) parceque pour le moment ce
ne sont que des paramètres

--
Michel Lévy
--
"EmanuelL" a écrit dans le message de
news:
Bonjour à Touis,

L'exécution des codes cidessous me donnent l'erreur :
"Msg 137, Niveau 15, État 2, Ligne 17
Must declare the scalar variable "@ldDateDu"."

Avez-vous une idée?

Merci d'avance. :'(


USE [FiducDB1];
GO

IF OBJECT_ID ( 'dbo.usp_CreateMinoMajo', 'P' ) IS NOT NULL
DROP PROCEDURE dbo.usp_CreateMinoMajo;
GO

CREATE PROCEDURE dbo.usp_CreateMinoMajo
-- '2008-01-01' AND '2008-12-31'
@ldDateDu datetime,
@ldDateAu datetime
AS
--- Suppression de la table temporaire ---
IF OBJECT_ID(N'tempdb..#tmp_MinMaj', N'U') IS NOT NULL
DROP TABLE #tmp_MinMaj ;
GO

--- Extraction de mino&majo et création de la table temporaire
#tmp_MinMaj ---
SELECT
FP.[FAK_NR] AS No_Facture
,PJ.[FIRMA_NR] AS No_Ste
,FP.[PROJEKT_NR] AS No_Client
,PJ.[BEZEICHNUNG] AS Nom_Client
,CASE WHEN FP.[BETRAGNETTO] < 0 THEN FP.[BETRAGNETTO] ELSE 0 END AS Mino
,CASE WHEN FP.[BETRAGNETTO] > 0 THEN FP.[BETRAGNETTO] ELSE 0 END AS Majo
,CONVERT(VARCHAR(11), FK.[FAKDATUM], 103) AS Date_Facture
,CONVERT(VARCHAR(11), FK.[ABRDATUM], 103) AS Date_Rapport
INTO #tmp_MinMaj
FROM [Hono1].[dbo].[FAKPOS] AS FP
JOIN [Hono1].[dbo].[FAKKOPF] AS FK
ON FK.[FAK_NR] = FP.[FAK_NR]
AND FK.[FAKDATUM] BETWEEN @ldDateDu AND @ldDateAu
JOIN [Hono1].[dbo].[PROJEKT] AS PJ
ON PJ.[PROJEKT_NR] = FP.[PROJEKT_NR]
WHERE FP.[POSTYP_SCNR] = 9
AND FP.[CODE_NR] = 9;
GO

--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org




Avatar
EmanuelL
Salut Michel,

Content de te voir ici!

En mettant declare,

CREATE PROCEDURE dbo.usp_CreateMinoMajo
-- '2008-01-01' AND '2008-12-31'
DECLARE @ldDateDu datetime
DECLARE @ldDateAu datetime
AS

J'ai l'erreur :
"Msg 156, Niveau 15, État 1, Procédure usp_CreateMinoMajo, Ligne 3
Incorrect syntax near the keyword 'DECLARE'."

;-)

Michel LEVY vient de nous annoncer :
Bonjour Emanuel,

un petit Declare de tes variables, peut-être ;-) parceque pour le moment ce
ne sont que des paramètres

--
Michel Lévy
--
"EmanuelL" a écrit dans le message de
news:
Bonjour à Touis,

L'exécution des codes cidessous me donnent l'erreur :
"Msg 137, Niveau 15, État 2, Ligne 17
Must declare the scalar variable "@ldDateDu"."

Avez-vous une idée?

Merci d'avance. :'(


USE [FiducDB1];
GO

IF OBJECT_ID ( 'dbo.usp_CreateMinoMajo', 'P' ) IS NOT NULL
DROP PROCEDURE dbo.usp_CreateMinoMajo;
GO

CREATE PROCEDURE dbo.usp_CreateMinoMajo
-- '2008-01-01' AND '2008-12-31'
@ldDateDu datetime,
@ldDateAu datetime
AS
--- Suppression de la table temporaire ---
IF OBJECT_ID(N'tempdb..#tmp_MinMaj', N'U') IS NOT NULL
DROP TABLE #tmp_MinMaj ;
GO

--- Extraction de mino&majo et création de la table temporaire #tmp_MinMaj
---
SELECT
FP.[FAK_NR] AS No_Facture
,PJ.[FIRMA_NR] AS No_Ste
,FP.[PROJEKT_NR] AS No_Client
,PJ.[BEZEICHNUNG] AS Nom_Client
,CASE WHEN FP.[BETRAGNETTO] < 0 THEN FP.[BETRAGNETTO] ELSE 0 END AS Mino
,CASE WHEN FP.[BETRAGNETTO] > 0 THEN FP.[BETRAGNETTO] ELSE 0 END AS Majo
,CONVERT(VARCHAR(11), FK.[FAKDATUM], 103) AS Date_Facture
,CONVERT(VARCHAR(11), FK.[ABRDATUM], 103) AS Date_Rapport
INTO #tmp_MinMaj
FROM [Hono1].[dbo].[FAKPOS] AS FP
JOIN [Hono1].[dbo].[FAKKOPF] AS FK
ON FK.[FAK_NR] = FP.[FAK_NR]
AND FK.[FAKDATUM] BETWEEN @ldDateDu AND @ldDateAu
JOIN [Hono1].[dbo].[PROJEKT] AS PJ
ON PJ.[PROJEKT_NR] = FP.[PROJEKT_NR]
WHERE FP.[POSTYP_SCNR] = 9
AND FP.[CODE_NR] = 9;
GO

--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org







--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
Avatar
Gloops
EmanuelL a écrit, le 14/05/2009 15:19 :
Salut Michel,

Content de te voir ici!

En mettant declare,

CREATE PROCEDURE dbo.usp_CreateMinoMajo
-- '2008-01-01' AND '2008-12-31'
DECLARE @ldDateDu datetime
DECLARE @ldDateAu datetime
AS

J'ai l'erreur :
"Msg 156, Niveau 15, État 1, Procédure usp_CreateMinoMajo, Ligne 3
Incorrect syntax near the keyword 'DECLARE'."





Bonjour,

Sur quels exemples te bases-tu pour mettre DECLARE avant AS BEGIN ?
"Incorrect syntax" signifie syntaxe incorrecte, donc la bonne idée est
de chercher la syntaxe correcte, non ?

L'aide en ligne n'est pas très loquace là-dessus, mais avec un moteur de
recherche on trouve quelques exemples de créations de procédures TSQL ,
par exemple en cherchant DECLARE datetime.

Par exemple :

http://www.mssqlcity.com/Articles/UDF/DateTimeUDF.htm

Avant AS BEGIN, ce sont les paramètres, donc le mot-clef DECLARE n'a pa s
sa place.
Avatar
EmanuelL
Bonjour Gloops,

C'est après que j'ai compris qu'on ne pouvais pas mettre DECLARE dans
CREATE PROC MaProc @Param1 type1, @Param2 type2.
Helas, on apprends tout le jour. ;-)

Merci tout de même de confirmer mon erreur.
A+

Bonjour,

Sur quels exemples te bases-tu pour mettre DECLARE avant AS BEGIN ?
"Incorrect syntax" signifie syntaxe incorrecte, donc la bonne idée est de
chercher la syntaxe correcte, non ?

L'aide en ligne n'est pas très loquace là-dessus, mais avec un moteur de
recherche on trouve quelques exemples de créations de procédures TSQL, par
exemple en cherchant DECLARE datetime.

Par exemple :

http://www.mssqlcity.com/Articles/UDF/DateTimeUDF.htm

Avant AS BEGIN, ce sont les paramètres, donc le mot-clef DECLARE n'a pas sa
place.



--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
Avatar
Patrice
Le problème semblerait résolu mais bizarremment le GO n'est pas évoqué. GO
clôt le lot d'instruction en cours et la deuxième partie ne fait donc pas
partie de la procédure et tout ce qui a été déclaré précédemment n'y est pas
connu...


--
Patrice

"EmanuelL" a écrit dans le message de
groupe de discussion :
Bonjour à Touis,

L'exécution des codes cidessous me donnent l'erreur :
"Msg 137, Niveau 15, État 2, Ligne 17
Must declare the scalar variable "@ldDateDu"."

Avez-vous une idée?

Merci d'avance. :'(


USE [FiducDB1];
GO

IF OBJECT_ID ( 'dbo.usp_CreateMinoMajo', 'P' ) IS NOT NULL
DROP PROCEDURE dbo.usp_CreateMinoMajo;
GO

CREATE PROCEDURE dbo.usp_CreateMinoMajo
-- '2008-01-01' AND '2008-12-31'
@ldDateDu datetime,
@ldDateAu datetime
AS
--- Suppression de la table temporaire ---
IF OBJECT_ID(N'tempdb..#tmp_MinMaj', N'U') IS NOT NULL
DROP TABLE #tmp_MinMaj ;
GO

--- Extraction de mino&majo et création de la table temporaire
#tmp_MinMaj ---
SELECT
FP.[FAK_NR] AS No_Facture
,PJ.[FIRMA_NR] AS No_Ste
,FP.[PROJEKT_NR] AS No_Client
,PJ.[BEZEICHNUNG] AS Nom_Client
,CASE WHEN FP.[BETRAGNETTO] < 0 THEN FP.[BETRAGNETTO] ELSE 0 END AS Mino
,CASE WHEN FP.[BETRAGNETTO] > 0 THEN FP.[BETRAGNETTO] ELSE 0 END AS Majo
,CONVERT(VARCHAR(11), FK.[FAKDATUM], 103) AS Date_Facture
,CONVERT(VARCHAR(11), FK.[ABRDATUM], 103) AS Date_Rapport
INTO #tmp_MinMaj
FROM [Hono1].[dbo].[FAKPOS] AS FP
JOIN [Hono1].[dbo].[FAKKOPF] AS FK
ON FK.[FAK_NR] = FP.[FAK_NR]
AND FK.[FAKDATUM] BETWEEN @ldDateDu AND @ldDateAu
JOIN [Hono1].[dbo].[PROJEKT] AS PJ
ON PJ.[PROJEKT_NR] = FP.[PROJEKT_NR]
WHERE FP.[POSTYP_SCNR] = 9
AND FP.[CODE_NR] = 9;
GO

--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org




Avatar
EmanuelL
Eh ben, on en prend tout le jour. Merci Patrice de cette information
précieuse pour moi.

A+ ;-)


Patrice a couché sur son écran :
Le problème semblerait résolu mais bizarremment le GO n'est pas évoqué. GO
clôt le lot d'instruction en cours et la deuxième partie ne fait donc pas
partie de la procédure et tout ce qui a été déclaré précédemment n'y est pas
connu...


--
Patrice

"EmanuelL" a écrit dans le message de groupe
de discussion :
Bonjour à Touis,

L'exécution des codes cidessous me donnent l'erreur :
"Msg 137, Niveau 15, État 2, Ligne 17
Must declare the scalar variable "@ldDateDu"."

Avez-vous une idée?

Merci d'avance. :'(


USE [FiducDB1];
GO

IF OBJECT_ID ( 'dbo.usp_CreateMinoMajo', 'P' ) IS NOT NULL
DROP PROCEDURE dbo.usp_CreateMinoMajo;
GO

CREATE PROCEDURE dbo.usp_CreateMinoMajo
-- '2008-01-01' AND '2008-12-31'
@ldDateDu datetime,
@ldDateAu datetime
AS
--- Suppression de la table temporaire ---
IF OBJECT_ID(N'tempdb..#tmp_MinMaj', N'U') IS NOT NULL
DROP TABLE #tmp_MinMaj ;
GO

--- Extraction de mino&majo et création de la table temporaire #tmp_MinMaj
---
SELECT
FP.[FAK_NR] AS No_Facture
,PJ.[FIRMA_NR] AS No_Ste
,FP.[PROJEKT_NR] AS No_Client
,PJ.[BEZEICHNUNG] AS Nom_Client
,CASE WHEN FP.[BETRAGNETTO] < 0 THEN FP.[BETRAGNETTO] ELSE 0 END AS Mino
,CASE WHEN FP.[BETRAGNETTO] > 0 THEN FP.[BETRAGNETTO] ELSE 0 END AS Majo
,CONVERT(VARCHAR(11), FK.[FAKDATUM], 103) AS Date_Facture
,CONVERT(VARCHAR(11), FK.[ABRDATUM], 103) AS Date_Rapport
INTO #tmp_MinMaj
FROM [Hono1].[dbo].[FAKPOS] AS FP
JOIN [Hono1].[dbo].[FAKKOPF] AS FK
ON FK.[FAK_NR] = FP.[FAK_NR]
AND FK.[FAKDATUM] BETWEEN @ldDateDu AND @ldDateAu
JOIN [Hono1].[dbo].[PROJEKT] AS PJ
ON PJ.[PROJEKT_NR] = FP.[PROJEKT_NR]
WHERE FP.[POSTYP_SCNR] = 9
AND FP.[CODE_NR] = 9;
GO

--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org







--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
Avatar
Gloops
EmanuelL a écrit, le 15/05/2009 12:01 :
Helas, on apprends tout le jour. ;-)



Et tous les jours, aussi, paraît-il ;)


Et peut-être tant mieux, non ?
Avatar
WOLO Laurent
Etes vous sûr que la remarque et @ldDateDu sont sur deux lignes différentes.
"EmanuelL" a écrit dans le message de
news:
Bonjour à Touis,

L'exécution des codes cidessous me donnent l'erreur :
"Msg 137, Niveau 15, État 2, Ligne 17
Must declare the scalar variable "@ldDateDu"."

Avez-vous une idée?

Merci d'avance. :'(


USE [FiducDB1];
GO

IF OBJECT_ID ( 'dbo.usp_CreateMinoMajo', 'P' ) IS NOT NULL
DROP PROCEDURE dbo.usp_CreateMinoMajo;
GO

CREATE PROCEDURE dbo.usp_CreateMinoMajo
-- '2008-01-01' AND '2008-12-31'
@ldDateDu datetime,
@ldDateAu datetime
AS
--- Suppression de la table temporaire ---
IF OBJECT_ID(N'tempdb..#tmp_MinMaj', N'U') IS NOT NULL
DROP TABLE #tmp_MinMaj ;
GO

--- Extraction de mino&majo et création de la table temporaire
#tmp_MinMaj ---
SELECT
FP.[FAK_NR] AS No_Facture
,PJ.[FIRMA_NR] AS No_Ste
,FP.[PROJEKT_NR] AS No_Client
,PJ.[BEZEICHNUNG] AS Nom_Client
,CASE WHEN FP.[BETRAGNETTO] < 0 THEN FP.[BETRAGNETTO] ELSE 0 END AS Mino
,CASE WHEN FP.[BETRAGNETTO] > 0 THEN FP.[BETRAGNETTO] ELSE 0 END AS Majo
,CONVERT(VARCHAR(11), FK.[FAKDATUM], 103) AS Date_Facture
,CONVERT(VARCHAR(11), FK.[ABRDATUM], 103) AS Date_Rapport
INTO #tmp_MinMaj
FROM [Hono1].[dbo].[FAKPOS] AS FP
JOIN [Hono1].[dbo].[FAKKOPF] AS FK
ON FK.[FAK_NR] = FP.[FAK_NR]
AND FK.[FAKDATUM] BETWEEN @ldDateDu AND @ldDateAu
JOIN [Hono1].[dbo].[PROJEKT] AS PJ
ON PJ.[PROJEKT_NR] = FP.[PROJEKT_NR]
WHERE FP.[POSTYP_SCNR] = 9
AND FP.[CODE_NR] = 9;
GO

--

*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org