Laden...

MSSQL 2008 R2:: benutzerdefinierte Tabelle als Rückgabewert einer Funktion angeben

Letzter Beitrag vor 12 Jahren 4 Posts 1.040 Views
MSSQL 2008 R2:: benutzerdefinierte Tabelle als Rückgabewert einer Funktion angeben

MSSQL 2008 R2

Hi, ich sitze gerade an einer Funktion, die als Rückgabewert eine von der Struktur immer wieder auftauchende Tabelle hat.

Da ich via


create type monat_spanne as table (anfang datetime, ende datetime)

meinen Typ erstellt habe, möchte ich diesen nun auch verwenden, nur klappt das nicht.

create function dbo.monatspanne (@date datetime)
returns @datum monat_spanne
as

wirft mir einen Fehler wegen Syntax.

Geht das an sich garnicht oder mach ich wieder mal was falsch?

MfG AoE

Ich sehe @date und @datum. Wenn damit das gleiche gemeint soll, ists falsch.

Die Syntax returns @datum monat_spanne sagt mir nichts. Was soll das tun? Bist du sicher dass das stimmt?
Schau dir doch mal Beispiele für Funktionen an, vielleicht erkennst du daran ja schon was du wie machen müsstest.

mhhh....

Es war von der Funktion nur der Kopf angegeben.

create function dbo.monatspanne (@date datetime)
 returns @datum monat_spanne
as
begin
    ....Anweisungen
    inserte etwas in @datum
    return
end

Die Funktion ist noch nicht fertig, daher nur erstmal pseudocode. Ist ja auch nicht schlimm. Der Rumpf interessiert grundlegen auch nicht.

@date und @datum sind weitestgehend unabhängig von einander. @date kommt rein, berechnen, @datum kommt raus.
Meine Frage ist jetzt, wie bzw ob es zu bewerkstelligen ist, dass die Tabelle @datum mit einem userdefined type (via Create Type) versehen wird.


Folgende Funktion geht

create type testDC from decimal(6,2)
go
create function dbo.test (@zahl testDC)
returns @rueck table (wert money)
as
begin
	declare @schritt money = (Convert(money, @zahl * 5))
	insert into @rueck
	values (@schritt)
	return
end

select * from dbo.test(4)

(Beispiel nur um meine Syntax nochmal zu verdeutlichen)

nur wäre hier ebenfalls die Frage offen, ob es möglich ist, für den return-datentyp einen userdefined type anzugeben

Hi,

nein, das funktioniert nicht. Siehe MSDN

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)