我从Oracle迁移了一个数据库,现在有一些标量值函数。
但是,当我调用它们时,会出现以下错误:
无法找到列“dbo”或用户定义的函数或聚合“dbo.chk_mgr”,或者名称不明确。
我像这样调用它:
SELECT dbo.chk_mgr('asdf')
我做错了什么?
我从Oracle迁移了一个数据库,现在有一些标量值函数。
但是,当我调用它们时,会出现以下错误:
无法找到列“dbo”或用户定义的函数或聚合“dbo.chk_mgr”,或者名称不明确。
我像这样调用它:
SELECT dbo.chk_mgr('asdf')
我做错了什么?
你确定它不是一个表值函数
吗?
我问这个问题的原因是:
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模式下的函数吗?
请确保您选择了正确的数据库。如果您尝试在新的查询窗口中运行它,可能已经选择了主数据库。
CREATE
语句吗? - Joe Stefanelli