2011-09-01 4 views
19

Oracle에서 데이터베이스를 마이그레이션했으며 이제는 몇 가지 스칼라 반환 함수가 있습니다.SQL에서 스칼라 값 함수 호출

열 "DBO"또는 사용자 정의 함수 또는 집계 "dbo.chk_mgr", 또는 이름 중 하나를 찾을 수 없습니다 모호 :

그러나, 내가 그들을 호출 할 때, 내가 말하는 오류가 발생합니다.

나는 이런 식으로 전화 해요 : 내가 잘못 뭐하는 거지

SELECT dbo.chk_mgr('asdf') 

?

+1

해당 함수에 대한'CREATE' 문을 보여줄 수 있습니까? –

+2

또한, 당신이 그것을 부르고 있다고 말할 때, 어떻게/어디에서 부르는거야? 어쩌면 당신은 그것을 깨닫지 않고 틀린 DB를 가리킬 것입니까? –

+0

방금이 문제가있었습니다. @ TomH의 코멘트가 정답이었다. 질문의 대답처럼 Scalar-valued 함수를 사용했기 때문에 최고 득표 수는 제게는 청어였습니다. –

답변

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

선택한 올바른 데이터베이스가 있는지 확인합니다. 새 쿼리 창에서 마스터 데이터베이스를 실행하려는 경우 선택한 마스터 데이터베이스가있을 수 있습니다.