2011-09-01 3 views
19

私はOracleからデータベースを移行し、いくつかのスカラー値関数を持っています。SQLでスカラー値関数を呼び出す

はコラム「DBO」またはユーザー定義関数または集計「dbo.chk_mgr」のいずれかを見つけることができません、または名前があいまいです:

はしかし、私はそれらを呼び出すとき、私はというエラーを取得します。

私はこのようにそれを呼んでいる:私は間違って何をやっている

SELECT dbo.chk_mgr('asdf') 

+1

問題の関数の 'CREATE'ステートメントを表示できますか? –

+2

また、あなたがそれを呼んでいると言うと、どうやってそれをどこから呼びますか?おそらくあなたは間違ったDBをそれを認識せずに指しているでしょうか? –

+0

私はちょうどこの問題を抱えていました。 @ TomHのコメントは正解でした。私が実際にスカラー値関数を使用していたので、(質問のように)一番上の投票回答は私のための赤いニシンでした。 –

答えて

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

あなたは正しいデータベースを選択していることを確認してください。新しいクエリー・ウィンドウでマスター・データベースを実行しようとすると、マスター・データベースが選択されている可能性があります。

関連する問題