I unten skalare Funktion haben:SQL Server - Konvertieren Skalarfunktion in Tabellenwertfunktion
CREATE FUNCTION [dbo].[GetStringIds]
(
@IdsTbl ids READONLY
)
RETURNS nvarchar(800)
AS
BEGIN
DECLARE @IdsLst nvarchar(800);
SELECT
@IdsLst = COALESCE(@IdsLst + ', ', '') + '(' + CAST(ID1 AS NVARCHAR) + ' : ' + CAST(ID2 AS NVARCHAR) + ')'
FROM
@IdsTbl
Return @IdsLst
END
Ein Tabellentyp ist dieser Skalar-Funktion übergeben, die zwei Felder ID1 und ID2 enthält, die beide int-Typ. Diese Funktion baut ein Zeichenketten wie folgt:
(12: 2), (23: 4), (4: 34)
HINWEIS: ID1 wiederholt werden kann, aber nicht ID2, ID1 + ID2 ist Primärschlüssel. Zum Beispiel:
ID1 | ID2
1 100
1 200
1 110
2 500
3 200
3 600
Nun, ich frage mich, ob es besser ist, es in eine Tabelle bewertet Funktion zu konvertieren, um die Datenbankleistung in Bezug auf die Ausführungszeit zu erhöhen.
Also in diesem Fall, wenn ich es in eine Tabellenwertfunktion umwandeln, wird es Leistung erhöhen? Wird die Ausführungszeit verkürzt? Wenn ja, wie kann es in eine Tabellenwertfunktion umgewandelt werden? Ich habe Probleme, es zu konvertieren, da ich eine Variable deklarieren muss, in der verketten.
Welche Tabelle möchten Sie zurückgeben? Ich meine, was werden die Säulen sein? –
In der Tat müssen Sie keine Variable deklarieren, um Strings zu verketten, da es Möglichkeiten gibt, Daten von Abfragen ohne Variablen zu verketten. Zum Beispiel http://stackoverflow.com/questions/13639262/optimal-way-to-concatenate-aggregate-strings –
@ZoharPeled die Tabelle, die ich zurückgeben möchte, ist immer eine Zeile mit einer Spalte und diese Spalte ist ein Nvarchar (die Verkettung Ergebnis). – user1624552