के कारण मैं एक उपयोगकर्ता-निर्धारित तालिका tvpInsertedColumns कहा जाता है प्रकार है:उपयोगकर्ता निर्धारित तालिका प्रकार प्रविष्टि कभी कभी रूपांतरण त्रुटि
CREATE TYPE [Audit].[tvpInsertedColumns] AS TABLE(
[ColumnName] [varchar](max) NOT NULL,
[NewValue] [varchar](max) NULL
)
एक संग्रहीत प्रक्रिया में मैं इस (दोनों @Name और क्या करने की कोशिश कर रहा हूँ @ फोन कर रहे हैं VARCHARs):
:DECLARE @AuditColumns Audit.tvpInsertedColumns
INSERT INTO @AuditColumns (ColumnName,NewValue)
SELECT 'Name',@Name UNION ALL
SELECT 'Phone',@Phone
इस त्रुटि के साथ विफल
बहरहाल, एक अन्य संग्रहित प्रक्रिया में मैं इस (@ AddressLine1 और @ AddressLine1 VARCHARs कर रहे हैं) कर रहा हूँ:
DECLARE @AuditColumns AS Audit.tvpInsertedColumns
INSERT INTO @AuditColumns (ColumnName,NewValue)
SELECT 'AddressLine1',@AddressLine1 UNION ALL
SELECT 'AddressLine2',@AddressLine2
और सब कुछ ठीक काम करता है।
दोनों संग्रहीत प्रक्रियाएं केवल एक साधारण डालने कर रही हैं और फिर एक अन्य संग्रहीत प्रक्रिया के साथ प्रकार का उपयोग करने की कोशिश कर रही हैं जो यूडीटी को पैरामीटर के रूप में लेती है।
यह यूडीटी के साथ मेरा पहला वास्तविक अनुभव है, इसलिए मुझे आशा है कि मुझे कुछ स्पष्ट याद आ रही है, लेकिन इससे मुझे कोई समझ नहीं आती है। अगर आपको और जानकारी चाहिए तो मुझे बताएं।
+1 और FYI करें VARCHAR लिए, यह एक UDT त्रुटि लेकिन संघ में डेटाप्रकार पूर्वता नहीं है सभी से पहले सम्मिलित – gbn
होता है यह बहुत सही नहीं था , लेकिन यह मुझे समाधान के लिए मिला (और यह सब मैं चाहता था)। '@ नाम' और '@ फोन' चर कभी भी प्रकार नहीं बदले, समस्या यह थी कि किसी बिंदु पर (मेरे नमूना कटऑफ के बाद) मैं एक पूर्णांक भी डाल रहा था कि यह एक स्वचालित रूपांतरण होगा। सभी गैर 'वर्चर' प्रकारों को 'वचरर (MAX)' में डालकर इस मुद्दे को ठीक किया गया। मुझे संदेह है कि जीबीएन सही है कि इसका यूडीटी के साथ कुछ लेना देना नहीं है बल्कि 'यूनियन' बयानों में डेटाटाइप प्राथमिकता के साथ। आप दोनों का आपकी सहायता के लिए धन्यवाद। – theChrisKent