私はOracleからデータベースを移行し、いくつかのスカラー値関数を持っています。SQLでスカラー値関数を呼び出す
はコラム「DBO」またはユーザー定義関数または集計「dbo.chk_mgr」のいずれかを見つけることができません、または名前があいまいです:
はしかし、私はそれらを呼び出すとき、私はというエラーを取得します。
私はこのようにそれを呼んでいる:私は間違って何をやっている
SELECT dbo.chk_mgr('asdf')
?
私はOracleからデータベースを移行し、いくつかのスカラー値関数を持っています。SQLでスカラー値関数を呼び出す
はコラム「DBO」またはユーザー定義関数または集計「dbo.chk_mgr」のいずれかを見つけることができません、または名前があいまいです:
はしかし、私はそれらを呼び出すとき、私はというエラーを取得します。
私はこのようにそれを呼んでいる:私は間違って何をやっている
SELECT dbo.chk_mgr('asdf')
?
あなたはそれが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
構文は私のために正常に動作しますこと:
CREATE FUNCTION dbo.test_func
(@in varchar(20))
RETURNS INT
AS
BEGIN
RETURN 1
END
GO
SELECT dbo.test_func('blah')
は、あなたの関数は、関数のようにdboスキーマの下に存在することを確認していますか?
はい、関数の下のスカラ値関数フォルダの下にあります –
PRINT dbo.[FunctionName] ([Parameter/Argument])
例えば:
PRINT dbo.StringSplit('77,54')
インラインテーブル値関数を使用しています。したがって、Select * From関数を使用する必要があります。 select function()を使用する場合は、スカラー関数を使用する必要があります。
https://msdn.microsoft.com/fr-fr/library/ms186755%28v=sql.120%29.aspx
あなたは正しいデータベースを選択していることを確認してください。新しいクエリー・ウィンドウでマスター・データベースを実行しようとすると、マスター・データベースが選択されている可能性があります。
問題の関数の 'CREATE'ステートメントを表示できますか? –
また、あなたがそれを呼んでいると言うと、どうやってそれをどこから呼びますか?おそらくあなたは間違ったDBをそれを認識せずに指しているでしょうか? –
私はちょうどこの問題を抱えていました。 @ TomHのコメントは正解でした。私が実際にスカラー値関数を使用していたので、(質問のように)一番上の投票回答は私のための赤いニシンでした。 –