Hallo, ich möchte mir eine Funktion (scalar, soll nur einen Wert zurückgeben) in eine SQL-Datenbank (MS SQL-Server 2005) einbauen. Was geht ist folgendes: ALTER FUNCTION test1(@para_id int) RETURNS int AS BEGIN return ( SELECT count(id) FROM aa WHERE aa.prop = @para_id ) END Jetzt möchte ich aber z.B. mehrere Tabellen abfragen und mir die Zwischenergebnisse merken, um später dann damit weiterzurechnen und schließlich irgendetwas zurückzugeben. Was ich nicht verstehe: wie bekomme ich ein Abfrageergebnis (eine Spalte eine Zeile) in eine Variable? Also es soll ca. so aussehen: ALTER FUNCTION test1(@para_id int) RETURNS int AS BEGIN return ( declare var1 as int declare var2 as int var1= SELECT count(id) FROM aa WHERE aa.prop = @para_id var2= SELECT count(id) FROM bb WHERE bb.prop = @para_id return var1+var2 ) END Ich hoffe, Ihr könnt mir mit der Syntax einen Tip geben.
ALTER FUNCTION test1(@para_id int) RETURNS int AS BEGIN return ( declare @var1 int declare @var2 int set @var1= (SELECT count(id) FROM aa WHERE aa.prop = @para_id) set @var2= (SELECT count(id) FROM bb WHERE bb.prop = @para_id) return var1+var2 ) END
klappt leider nicht: Incorrect syntax near the keyword 'declare'. Und ich dachte schon , ich war so dicht dran..
1 | ALTER FUNCTION test1(@para_id int) RETURNS int |
2 | AS |
3 | BEGIN |
4 | declare @var1 int |
5 | declare @var2 int |
6 | |
7 | set @var1 = (SELECT count(id) FROM aa WHERE aa.prop = @para_id) |
8 | set @var2 = (SELECT count(id) FROM bb WHERE bb.prop = @para_id) |
9 | |
10 | return @var1 + @var2 |
11 | END |
Das übersteht zumindest die einfache Syntaxüberprüfung der SQL Management Console (MSSQL2005).
Was man häufiger liest und was auch von MSSQL verstanden wird ist
1 | SELECT @var = dings FROM bums WHERE 2=5 |
der mechatroniker schrieb: > Was man häufiger liest und was auch von MSSQL verstanden wird ist > SELECT @var = dings FROM bums WHERE 2=5 es geht beides set @var = (select dings FROM bums WHERE 2=5)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.