Ich möchte gespeicherte Prozeduren oder Funktionen zum Auswerten von Ad-hoc-Abfragen oder Filtern erstellen. Ist es möglich, Funktionen oder gespeicherte Prozeduren mit Tabellenwerten zu erstellen?Verkettung Funktion/gespeicherte Prozeduraufrufe
Angenommen, wir haben:
CREATE TABLE TestTbl(
Id UNIQUEIDENTIFIER PRIMARY KEY,
Name NVARCHAR(max),
Quantity INT)
Mit einem entsprechenden benutzerdefinierten Tabellentyp:
CREATE TYPE TResult AS TABLE(
Id UNIQUEIDENTIFIER,
Name NVARCHAR(max),
Quantity INT)
Eine grundlegende alle Funktion auswählen:
CREATE FUNCTION Generator()
RETURNS TABLE
AS
RETURN SELECT Id, Name, Quantity
FROM TestTbl
einige Filter, die einen TResult
Parameter akzeptieren und mit dem ich die Suchanfrage des Benutzers zusammenstellen möchte, zB:
CREATE FUNCTION F1(
@in TResult READONLY)
RETURNS TABLE
AS
RETURN SELECT Id, Name, Quantity
FROM @In
WHERE Name LIKE '%h%'
SELECT * FROM Generator()
erzeugt die erwarteten Ergebnisse.
Wie kann ich etwas tun?
SELECT *
FROM F1(Generator())