2011-09-01 12 views
19

में स्केलर-मूल्यवान कार्यों को कॉल करना मैंने ऑरैकल से डेटाबेस माइग्रेट किया है, और अब कुछ स्केलर-मूल्यवान फ़ंक्शंस हैं।एसक्यूएल

या तो कॉलम "dbo" या उपयोगकर्ता परिभाषित समारोह या कुल "dbo.chk_mgr", या नाम नहीं खोजा जा सका अस्पष्ट है:

हालांकि, जब मैं उन्हें फोन, मैं कह रहा कोई त्रुटि मिलती है।

मैं इस तरह यह फोन कर रहा हूँ:

SELECT dbo.chk_mgr('asdf') 

क्या मैं गलत कर रहा हूँ?

+1

क्या आप हमें प्रश्न के लिए 'CREATE' कथन दिखा सकते हैं? –

+2

इसके अलावा, जब आप कहते हैं कि आप इसे कॉल कर रहे हैं, तो आप इसे कहां/कहां से बुला रहे हैं? शायद आप इसे महसूस किए बिना गलत डीबी को इंगित कर रहे हैं? –

+0

मुझे अभी यह समस्या थी। @ टॉमएच की टिप्पणी सही जवाब था। शीर्ष वोट दिया गया जवाब मेरे लिए एक लाल हेरिंग था (जैसे सवाल कहता है) मैं वास्तव में एक स्केलर-मूल्यवान फ़ंक्शन का उपयोग कर रहा था। –

उत्तर

17

क्या आप वाकई Table-Valued Function नहीं हैं?

कारण मैं पूछता हूँ:

CREATE FUNCTION dbo.chk_mgr(@mgr VARCHAR(50)) 
RETURNS @mgr_table TABLE (mgr_name VARCHAR(50)) 
AS 
BEGIN 
    INSERT @mgr_table (mgr_name) VALUES ('pointy haired boss') 
    RETURN 
END 
GO 

SELECT dbo.chk_mgr('asdf') 
GO 

परिणाम:

Msg 4121, Level 16, State 1, Line 1 
Cannot find either column "dbo" or the user-defined function 
or aggregate "dbo.chk_mgr", or the name is ambiguous. 

हालांकि ...

SELECT * FROM dbo.chk_mgr('asdf') 

mgr_name 
------------------ 
pointy haired boss 
6

वाक्य रचना मेरे लिए ठीक काम करता है यही कारण है कि:

CREATE FUNCTION dbo.test_func 
(@in varchar(20)) 
RETURNS INT 
AS 
BEGIN 
    RETURN 1 
END 
GO 

SELECT dbo.test_func('blah') 

आप यह सुनिश्चित करें कि समारोह एक समारोह के रूप और dbo स्कीमा तहत मौजूद हैं?

+1

हां, यह कार्य के तहत स्केलर-मूल्यवान फ़ंक्शन फ़ोल्डर के अंतर्गत है ... –

12
PRINT dbo.[FunctionName] ([Parameter/Argument]) 

उदा .:

PRINT dbo.StringSplit('77,54') 
1

आप इनलाइन तालिका मूल्य फ़ंक्शन का उपयोग कर रहे हैं। इसलिए आपको फंक्शन से * चुनें * का उपयोग करना होगा। यदि आप चुनिंदा फ़ंक्शन() का उपयोग करना चाहते हैं तो आपको स्केलर फ़ंक्शन का उपयोग करना होगा।

https://msdn.microsoft.com/fr-fr/library/ms186755%28v=sql.120%29.aspx

-1

सुनिश्चित रूप से चयनित सही डेटाबेस किया हुआ है। यदि आप इसे एक नई क्वेरी विंडो में चलाने की कोशिश कर रहे हैं तो आपके पास मास्टर डेटाबेस चयनित हो सकता है।