verwendetes Datenbanksystem: <SQL Management Studio>
hi folks,
ich arbeite derzeit mit Gespeicherte Prozeduren, bekomm aber folgende Fehlermeldung:> Fehlermeldung:
Meldung 116, Ebene 16, Status 1, Prozedur p_zeiten, Zeile 20
Nur ein einziger Ausdruck kann in der Auswahlliste angegeben werden, wenn die Unterabfrage nicht mit EXISTS eingeleitet wird.
Hier meine Prozedur:
CREATE PROC p_zeiten
@SerieID int
AS
DECLARE @AnfangsUhrzeit int
DECLARE @EndUhrzeit int
IF ((SELECT AnfangsUhrzeit FROM wirdGesendet WHERE @AnfangsUhrzeit = AnfangsUhrzeit) < 1000) AND ((SELECT EndUhrzeit FROM wirdGesendet WHERE @EndUhrzeit = EndUhrzeit) < 1000)
BEGIN
SElect @AnfangsUhrzeit =( select top 6 Serie.Titel, convert (char(10),cast(cast(AnfangsDatum as char(8)) as datetime),103)AS'Datum' ,
SUBSTRING(CONVERT(VARCHAR(50), AnfangsUhrzeit), 1, 1) + ':' +
SUBSTRING(CONVERT(VARCHAR(50), AnfangsUhrzeit), 2, 3) as 'Anfang',
SUBSTRING(CONVERT(VARCHAR(50), EndUhrzeit), 1, 1) + ':' +
SUBSTRING(CONVERT(VARCHAR(50), EndUhrzeit), 2, 3) as 'Ende',
SenderName as 'Sender' from wirdGesendet
left join Sender on(wirdGesendet.SenderID = Sender.SenderID)
left join Serie on (Serie.ID=wirdGesendet.SerieID) order by AnfangsDatum
)FROm wirdGesendet Where @AnfangsUhrzeit = AnfangsUhrzeit
END
ELSE IF ((SELECT AnfangsUhrzeit FROM wirdGesendet WHERE @AnfangsUhrzeit = AnfangsUhrzeit) > 1000) AND ((SELECT EndUhrzeit FROM wirdGesendet WHERE @EndUhrzeit = EndUhrzeit) > 1000)
BEGIN
Select @AnfangsUhrzeit = ( select top 6 Serie.Titel, convert (char(10),cast(cast(wirdGesendet.AnfangsDatum as char(8)) as datetime),103)AS'Datum' ,
SUBSTRING(CONVERT(VARCHAR(50), AnfangsUhrzeit), 1, 2) + ':' +
SUBSTRING(CONVERT(VARCHAR(50), AnfangsUhrzeit), 3, 4) as 'Anfang',
SUBSTRING(CONVERT(VARCHAR(50), EndUhrzeit), 1, 2) + ':' +
SUBSTRING(CONVERT(VARCHAR(50), EndUhrzeit), 3, 4) as 'Ende', SenderName as 'Sender' from wirdGesendet
left join Sender on(wirdGesendet.SenderID = Sender.SenderID)
left join Serie on (Serie.ID=wirdGesendet.SerieID) order by AnfangsDatum
)FROm wirdGesendet Where @AnfangsUhrzeit = AnfangsUhrzeit
END
GO
hab schon vieles ausprobiert...aber leider kein erfolg :S
BITTE UM HILFE!
Hallo,
das hat mit einer SP nichts zu tun, sondern mit der Abfrage an sich. Das Problem ist, dass du @AnfangsUhrzeit als INT deklarierst, und später willst du dieser Variablen ganze Zeilen vorwerfen (SELECT TOP 6 xxxx). Das funktioniert natürlich nicht, da erwartet wird dass du dieser Variablen nur ein INT vorwirfst. Deswegen auch "Nur ein einziger Ausdruck kann in der Auswahlliste angegeben werden".
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
Hallo Kaur,
was mir bei deiner sp auffällt ist das ich nicht erkenne was du damit beabsichtigst.
Folgendes ist auffällig:
In dieser Form:
select @Variable = feld from tabelle where...
Viele grüße,
telfa