मैं एक गणना स्तंभ के लिए इस समारोह है:गणना नहीं बच सकते हैं स्तंभ - निर्धारित करने योग्य नहीं
CREATE FUNCTION [dbo].[GetAllocatedStartTime](@Year INT, @Week INT)
RETURNS DATETIME
WITH schemabinding
AS BEGIN
RETURN dateadd(week,@Week-(1),dateadd(day,(-1),dateadd(week,datediff(week,(0),CONVERT([varchar](4),@Year,(0))+'-01-01'),(1))))
END
GO
मैं आशा में WITH schemabinding
कहा कि यह यह नियतात्मक तो मैं यह बच सकते हैं होगा। यह दो इनपुट [Week]
और [Year]
के समान होना चाहिए, हमेशा एक ही परिणाम प्राप्त करेंगे।
सटीक त्रुटि है:
परिकलित स्तंभ तालिका में 'AllocatedTimeStart' 'Tmp_Bookings' क्योंकि स्तंभ गैर नियतात्मक है कायम नहीं किया जा सकता।
मैं कॉलम में इस सूत्र का उपयोग कर रहा हूँ:
([dbo].[GetAllocatedStartTime]([Year],[Week]))
और स्तंभ defs:
[Week] [int] NOT NULL,
[Year] [int] NOT NULL,
[AllocatedTimeStart] AS ([dbo].[GetAllocatedStartTime]([Year],[Week])),
कोई भी विचार?
संपादित करें:
बदला गया लाइन के लिए:
RETURN dateadd(week,@Week-(1),dateadd(day,(-1),dateadd(week,datediff(week,(0),CONVERT(datetime,CONVERT([varchar](4),@Year,(0))+'0101',112)),(1))))
लेकिन अब मैं स्तंभ के लिए सूत्र कह एक त्रुटि अमान्य है मिलता है। भले ही समारोह ठीक बचाता है।
संपादित करें 2:
मैं बिल्कुल दिखाया है मैं क्या कर रहा हूँ (या कम से कम मैं कोशिश की है)। वास्तव में कुछ भी अतिरिक्त नहीं है। जैसा कि यह कहता है कि कॉलम में फॉर्मूला रेफ [dbo].AllocatedStartDate(...)
के साथ पिछले फ़ंक्शन (मूल एक) के साथ जोड़ा गया था, लेकिन यह जारी नहीं था, यह कहा गया कि यह गैर निर्धारक नहीं था। तो सुझाव के अनुसार मैं फंक्शन बदल गया है, नए कोड के साथ रूपांतरण भाग की जगह है, तो समारोह अब लगता है कि:
FUNCTION [dbo].[GetSTime](@Year INT, @Week INT)
RETURNS DATETIME
WITH schemabinding
AS BEGIN
RETURN dateadd(week,@Week-(1),dateadd(day,(-1),dateadd(week,datediff(week,(0),CONVERT(datetime,CONVERT([varchar](4),@Year,(0))+'0101',112)),(1))))
END
तो मैं गणना क्षेत्र (([dbo].[GetAllocatedStartTime]([Year],[Week])))
में पहले की तरह ही सूत्र कोशिश की ... और यह फॉर्मूला को अस्वीकार करता है, कहता है कि यह वैध नहीं है ... जो कि सूत्र है जैसा कि अजीब है, इसलिए यह बदले गए फ़ंक्शन की किसी प्रकार की जांच कर रहा है और यह अमान्य होना है, जो भी अजीब है क्योंकि मैंने किया सादा SELECT dbo.GetAllocatedStartTime(2012,13)
और यह काम किया ...
तो हाँ मैं उलझन में हूं, और मैंने कभी भी SqlFiddle
कभी इसका उपयोग नहीं किया है। लेकिन वास्तव में मैंने जो कुछ कहा है उससे कहीं ज्यादा कुछ नहीं है।
समस्या आपके फ़ंक्शन के साथ नहीं है, इसकी तालिका पर गणना कॉलम के साथ। अपने प्रश्न पर उस परिभाषा को पोस्ट करें ताकि हम आपकी मदद कर सकें – Lamak
एसक्यूएल-सर्वर का कौन सा संस्करण है? –
@ypercube 2008 आर 2 – sprocket12