Code:
CREATE TYPE [dbo].[tableOfInts] AS TABLE (
intValue INT NULL
);
Code:
CREATE FUNCTION [dbo].[MaxOfTable]
(
@ints [dbo].[tableOfInts] READONLY
)
RETURNS INT
AS
BEGIN
DECLARE @maxInt AS INT;
SELECT @maxInt = MAX(ints); --Fehler
RETURN @maxInt
END;
Code:
DECLARE @ints [dbo].[tableOfInts];
INSERT INTO @ints (
intValue
)
VALUES (1), (2), (4), (2), (3);
SELECT [dbo].[MaxOfTable] (@ints)
Hallo zusammen,
ich habe zwei Fragen, vielleicht könnt ihr mir ja helfen:
1. In meiner Funktion MaxOfTable möchte ich den maximalen Wert zurückliefern
der sich im User Defined Type tableOfInts befindet.
Diese Syntax ist wohl falsch, wie müsste es richtig lauten?
SELECT @maxInt = MAX(ints); --Fehler
2. Ist es möglich beim Funktionsaufruf innerhalb der runden Klammern den User Defined Type
tabelOfInts zu definieren und mit Werten zu belegen, in etwa so:
SELECT [dbo].[MaxOfTable] (tableOfInts(1,7,2))
In der Lösung oben definiere ich zuerst eine Variable, weise ihr Werte zu und übergebe die Variable dann als Parameter an die Funktion.
Ich möchte auf die Variable aber verzichten und direkt im Funktionsaufruf die Werte definieren und übergeben. Ist dies möglich?
Grund dafür ist, dass ich meine Funktion später wie folgt nutzen wollen würde:
Code:
SELECT
temp1,
temp2,
temp3,
temp4,
[dbo].[MaxOfTable] ([dbo].[tableOfInts](temp1, temp2, temp3, temp4)) AS tempMax
FROM
TestDataTable
An die Helfer bedanke ich mich schonmal im voraus.