オラクルからデータベースを移行しましたが、スカラー値の関数がいくつかあります。
ただし、電話をかけると、次のようなエラーが発生します。
列「dbo」、ユーザー定義関数、または集計「dbo.chk_mgr」のいずれかが見つからないか、名前があいまいです。
私はそれをこのように呼んでいます:
SELECT dbo.chk_mgr('asdf')
私は何が間違っているのですか?
オラクルからデータベースを移行しましたが、スカラー値の関数がいくつかあります。
ただし、電話をかけると、次のようなエラーが発生します。
列「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
次のことができます
PRINT dbo.[FunctionName] ( [Parameter/Argument] )
例えば:
PRINT dbo.StringSplit('77,54')
その構文は私にとってはうまく機能します:
CREATE FUNCTION dbo.test_func
(@in varchar(20))
RETURNS INT
AS
BEGIN
RETURN 1
END
GO
SELECT dbo.test_func('blah')
関数が関数としてdboスキーマの下に存在することを確認しますか?
インライン テーブル値関数を使用しています。したがって、 Select * From 関数を使用する必要があります。select function() を使用する場合は、スカラー関数を使用する必要があります。
https://msdn.microsoft.com/fr-fr/library/ms186755%28v=sql.120%29.aspx
正しいデータベースが選択されていることを確認してください。新しいクエリ ウィンドウでマスター データベースを実行しようとしている場合は、マスター データベースが選択されている可能性があります。