SQL Server 2008: هل يمكن ل UDF متعددة الإرجاع UDT؟ [مكرر
سؤال
هذا السؤال لديه بالفعل إجابة هنا:
هل من الممكن أن تقوم UDF متعددة البيان بإرجاع نوع جدول محدد للمستخدم، بدلا من جدول محدد داخل مرمى عائده؟
لذلك بدلا من:
CREATE FUNCTION MyFunc
(
@p1 int, @p2 char
)
RETURNS
@SomeVar TABLE
(
c1 int
)
AS
أود أن أفعل:
CREATE FUNCTION MyFunc
(
@p1 int, @p2 char
)
RETURNS
@SomeVar MyTableType
AS
السبب في ذلك هو أنه داخل وظيفتي أسميه وظائف أخرى ويجب أن تمر في MyTableType UDT، حتى إذا قمت بتحديد نفس تعريف الجدول نفسه تماما في نوع جدول العودة، فسيتم رمي خطأ في اشتباك المعامل.
المحلول
أفضل ما يمكن أن يأتي معه هو إعلان متغير جدول من النوع المحلي الخاص بك إلى الوظيفة واستخدامها في جميع أنحاء التعليمات البرمجية الخاصة بك. ثم قم بإدراج ... حدد إلى جدول المعلمة مباشرة قبل عبارة الإرجاع.
لقد تجنبت أنواع المعرفة من قبل المستخدم حتى الآن. في حين أنهم يبدووا واعدا، مع القدرة على تغيير النوع في موقع واحد بدلا من تغيير أنواع البيانات في كل مكان، فإنهم فقط يبدو أنهم يقدمون أبدا عندما يتعلق الأمر بالإنتاجية والصيانة بسبب مشكلات مثل هذه.