Ich bin ziemlich neu in T-SQL, ich habe gerade mit einem Eingabeparameter für meine gespeicherte Prozedur zu kämpfen.T-SQL Benutzerdefinierter Datentyp als Eingabeparameter für gespeicherte Prozedur
Ich möchte eine Liste von SalesAreas
an meine gespeicherte Prozedur übergeben. A SalesArea
kann mehrere countryIds und einige bool-Werte haben, stellen Sie sich eine Klasse in C# vor.
Ich begann meinen eigenen Datentyp zu schaffen es in die gespeicherte Prozedur zu übergeben:
CREATE TYPE tIdList AS TABLE
(
ID INT NULL
);
GO
CREATE TYPE tSalesArea AS TABLE
(
CountryIds tIdList NULL,
IsLargeClient BIT NULL,
IsSmallClient BIT NULL,
);
GO
In der gespeicherten Prozedur ich in einer Liste von tSalesAreas
übergeben mag:
@SalesAreas tSalesArea READONLY
Das Problem : Ich kann meine tIdList
nicht als Datentyp für tSalesArea
verwenden.
Wenn ich einfügen 2 Verkaufsgebiete (1: countryIds 3,5; 2: countryid 7), wird es in etwa so aussehen:
Id | SalesAreaId | CountryId
---+-------------+-----------
1 | 1 | 3
2 | 1 | 5
3 | 2 | 7
Wissen Sie, wie dieses Problem zu lösen?
Danke!
Sie könnten stattdessen auch einen XML-Parameter als Ersatz für eine Tabelle übergeben. –
@JohnEisbrener Oder JSON, oder eine Zeichenfolge, die du parsen musst ... Es gibt immer Alternativen. Tabelle-Wert-Parameter sind jedoch semantisch angemessener, und _usually_ führen viel besser als andere Optionen aus. – SqlZim