29

オラクルからデータベースを移行しましたが、スカラー値の関数がいくつかあります。

ただし、電話をかけると、次のようなエラーが発生します。

列「dbo」、ユーザー定義関数、または集計「dbo.chk_mgr」のいずれかが見つからないか、名前があいまいです。

私はそれをこのように呼んでいます:

SELECT dbo.chk_mgr('asdf')

私は何が間違っているのですか?

4

5 に答える 5

26

ではないことを確認します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
于 2011-09-02T03:45:37.923 に答える
20

次のことができます

PRINT dbo.[FunctionName] ( [Parameter/Argument] )

例えば:

PRINT dbo.StringSplit('77,54')
于 2012-08-08T07:56:49.620 に答える
11

その構文は私にとってはうまく機能します:

CREATE FUNCTION dbo.test_func
(@in varchar(20))
RETURNS INT
AS
BEGIN
    RETURN 1
END
GO

SELECT dbo.test_func('blah')

関数が関数としてdboスキーマの下に存在することを確認しますか?

于 2011-09-01T19:33:24.840 に答える
2

インライン テーブル値関数を使用しています。したがって、 Select * From 関数を使用する必要があります。select function() を使用する場合は、スカラー関数を使用する必要があります。

https://msdn.microsoft.com/fr-fr/library/ms186755%28v=sql.120%29.aspx

于 2015-08-04T08:05:47.807 に答える
-1

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

于 2016-04-28T14:38:57.287 に答える