Forum: PC-Programmierung Syntax für Create Function in MS SQL 2005


von Knoten_im_Kopf (Gast)


Lesenswert?

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.

von Peter II (Gast)


Lesenswert?

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

von Knoten_im_Kopf (Gast)


Lesenswert?

klappt leider nicht:

Incorrect syntax near the keyword 'declare'.

Und ich dachte schon , ich war so dicht dran..

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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).

von Knoten_im_Kopf (Gast)


Lesenswert?

ah danke, ja. Ich taste mich 'ran! :-)

von der mechatroniker (Gast)


Lesenswert?

Was man häufiger liest und was auch von MSSQL verstanden wird ist
1
SELECT @var = dings FROM bums WHERE 2=5

von Peter II (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.