cte mit Parametern in einer StorPro

06/01/2009 - 10:50 von AndreT78 | Report spam
Hallo,
ich habe eine Stored Procedure, die mit 2 Parametern aufgerufen wird.

exec storpro1 (Datum1, Datum2)

nun habe ich dadrin eine cte -Tabelle an die ich gerne diese Parameter in
die Where - Bedingung übergeben würde, um nachher mit dem Ergebnis weiter zu
arbeiten.

Leider klappt es nicht so wie ich es gerne hàtte.

Fehlermeldung:
Es wurden Parameter für das 'cte_ergebnis1'-Objekt bereitgestellt, das keine
Funktion ist. Falls die Parameter als Tabellenhinweis dienen sollen, ist ein
WITH-Schlüsselwort erforderlich.

Leider habe ich es nicht geschaft, das With-Schlüsselword richtig zu
plazieren.

ich hoffe, Ihr könnt mir helfen.


Code-Beispiel:

alter proc storpro_test

@Datum as datetime,
@Datumbis as datetime
as

WITH
cte_Ergebnis1 (Rang, Jahr, Monat_num, Buchungen, Zeit,qty_h)
AS
(
select
ROW_NUMBER() OVER (ORDER BY Jahr, Monat_num) Rang,
Jahr,
Monat_num,

sum(Buchungen) Buchungen,
sum(zeit_Minuten)/60 Zeit,
cast(sum(Buchungen) as float)/cast((sum(zeit_minuten)/60) as float) qty_h

from Quelltabelle with (nolocK)

where Datum >= @Datum and Datum <= @Datumbis
group by Monat_num, Jahr

)

select * from cte_ergebnis1 (nolock) --weiterverarbeitung

inner join.


Danke
Gruß Andre
 

Lesen sie die antworten

#1 Frank Kalis
06/01/2009 - 11:45 | Warnen spam
On 6 Jan., 10:50, AndreT78 wrote:

ich habe eine Stored Procedure, die mit 2 Parametern aufgerufen wird.

exec storpro1 (Datum1, Datum2)

nun habe ich dadrin eine cte -Tabelle an die ich gerne diese Parameter in
die Where - Bedingung übergeben würde, um nachher mit dem Ergebnis weiter zu
arbeiten.

Leider klappt es nicht so wie ich es gerne hàtte.

Fehlermeldung:
Es wurden Parameter für das 'cte_ergebnis1'-Objekt bereitgestellt, das keine
Funktion ist. Falls die Parameter als Tabellenhinweis dienen sollen, ist ein
WITH-Schlüsselwort erforderlich.


Code-Beispiel:

alter proc storpro_test

@Datum as datetime,
@Datumbis as datetime
as

WITH
cte_Ergebnis1 (Rang, Jahr, Monat_num, Buchungen, Zeit,qty_h)
AS
(
select
ROW_NUMBER() OVER (ORDER BY Jahr, Monat_num) Rang,
Jahr,
Monat_num,

sum(Buchungen) Buchungen,
sum(zeit_Minuten)/60 Zeit,
cast(sum(Buchungen) as float)/cast((sum(zeit_minuten)/60) as float) qty_h

 from Quelltabelle with (nolocK)

where Datum >= @Datum and Datum <= @Datumbis
group by Monat_num, Jahr

)

select * from cte_ergebnis1 (nolock)  --weiterverarbeitung

inner join.




Jemand mag mich korrigieren, aber ich glaube nicht, dass Du eine CTE
mit Parametern aufrufen kannst. Warum machst Du nicht eine Inline
Table-Valued Function daraus?
Frank Kalis
Microsoft SQL Server MVP
Webmaster: http://www.insidesql.org

Ähnliche fragen