आप कर सकते हैं, हालांकि कोई तालिका नहीं। दस्तावेज़ीकरण से:
<ब्लॉकक्वॉट>ट्रांजैक्ट-एसक्यूएल फ़ंक्शन के लिए, टाइमस्टैम्प डेटाटाइप को छोड़कर, सीएलआर उपयोगकर्ता-परिभाषित प्रकार और उपयोगकर्ता-परिभाषित तालिका प्रकारों सहित सभी डेटाटाइप की अनुमति है।
आप उपयोगकर्ता-परिभाषित तालिका प्रकारों का उपयोग कर सकते हैं ।
उपयोगकर्ता-परिभाषित तालिका प्रकार का उदाहरण:
CREATE TYPE TableType
AS TABLE (LocationName VARCHAR(50))
GO
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
तो आप अपने टेबल प्रकार को परिभाषित करने के लिए क्या कर सकते हैं, उदाहरण के लिए TableType
और उस फ़ंक्शन को परिभाषित करें जो इस प्रकार के पैरामीटर को लेता है। एक उदाहरण समारोह:
CREATE FUNCTION Example( @TableName TableType READONLY)
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @name VARCHAR(50)
SELECT TOP 1 @name = LocationName FROM @TableName
RETURN @name
END
पैरामीटर को केवल पढ़ने के लिए होना चाहिए। और उदाहरण उपयोग:
DECLARE @myTable TableType
INSERT INTO @myTable(LocationName) VALUES('aaa')
SELECT * FROM @myTable
SELECT dbo.Example(@myTable)
आप जो हासिल करना चाहते हैं उसके आधार पर आप इस कोड को संशोधित कर सकते हैं।
संपादित करें: यदि आपके पास तालिका में डेटा है तो आप एक चर बना सकते हैं:
DECLARE @myTable TableType
और डेटा को अपनी टेबल से वेरिएबल में ले जाएं
INSERT INTO @myTable(field_name)
SELECT field_name_2 FROM my_other_table