Oracleからデータベースを移行しましたが、現在はいくつかのスカラー値関数があります。
ただし、それらを呼び出すと、次のエラーが表示されます。
列 "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