SQLSERVER T-SQL 自定义函数 不是可以识别的函数名 消息 208,级别 16

时间:2021-06-07 18:26:26
SQLSERVER T-SQL 自定义函数 不是可以识别的函数名

我的自定义函数头

函数在在查询分析器里都编译通了,就是执行
select * from is_constrain_exist('10,175')
的时候报错
----------------------------------------
服务器: 消息 208,级别 16,状态 3,行 1
对象名 'is_constrain_exist' 无效。
----------------------------------------------------

create function is_constrain_exist(@food_dot varchar(32))
RETURNS varchar(16)
as 
。。。



这个网上找来的split方法 也是自定义函数  粘进去一编译都直接就好用,为什么我自己写的都不行呢?
create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
--实现split功能 的函数
--date    :2005-4-20
--Author :Domino
as 
begin
    declare @i int
    set @SourceSql=rtrim(ltrim(@SourceSql))
    set @i=charindex(@StrSeprate,@SourceSql)
    while @i>=1
    begin
        insert @temp values(left(@SourceSql,@i-1))
        set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
        set @i=charindex(@StrSeprate,@SourceSql)
    end
    if @SourceSql<>'\'
       insert @temp values(@SourceSql)
    return 
end


12 个解决方案

#1


在网上找来这个  也解决不了?难道是我没看懂?~~ 求大家帮助!急死了都


自定义存储过程调自定义函数提示"不是可以识别的函数名"问题2007-07-26 16:44  今天在做项目的时候,需要在一个自己写的sql server存储过程中调用自己写的函数,创建这个存储过程时报错,提示"不是可以识别的函数名",经过研究,调试,发现要想调用自定义的函数,必须该函数所属的用户名,如dbo,写成dbo.你的自定义函数名,这样就可以了。 

#2


select dbo.is_constrain_exist('10,175') 

#3


很明显,报的是函数名不合法,换个简单的试试

#4


引用 2 楼 happyflystone 的回复:
SQL codeselect dbo.is_constrain_exist('10,175') 



还是不行
服务器: 消息 208,级别 16,状态 1,行 1
对象名 'dbo.is_constrain_exist' 无效。

#5


引用 3 楼 changjiangzhibin 的回复:
很明显,报的是函数名不合法,换个简单的试试




不是不合法,是调用不对



create function is_constrain_exist(@food_dot varchar(32)) 
RETURNS varchar(16) 
as  
begin
   return 'asdf'
end


go


select dbo.is_constrain_exist('asdf')
/*
---------------- 
asdf

(所影响的行数为 1 行)
*/

select * from dbo.is_constrain_exist('asdf')

/*
服务器: 消息 208,级别 16,状态 3,行 11
对象名 'dbo.is_constrain_exist' 无效。

*/

drop function is_constrain_exist



#6


引用 4 楼 iwemeada 的回复:
引用 2 楼 happyflystone 的回复:
SQL codeselect dbo.is_constrain_exist('10,175')  
 


还是不行 
服务器: 消息 208,级别 16,状态 1,行 1 
对象名 'dbo.is_constrain_exist' 无效。


首先你的函数创建成功了吗?

#7


happyflystone 你好!

我的SQLSERVER服务是在虚拟主机上的 似乎没有dbo权限 

create function is_constrain_exist(@food_dot varchar(32)) 
RETURNS varchar(16) 
is_constrain_exist函数建立之后 在查询分析器左侧的树菜单里 
名称自动加上了我在虚拟主机上的数据库名 a434222 就是a434222.f_split

是不是和这个有关系啊? 谢谢!

#8


写错了个字
是a434222.is_constrain_exist

#9


引用 6 楼 happyflystone 的回复:
引用 4 楼 iwemeada 的回复:
引用 2 楼 happyflystone 的回复: 
SQL codeselect dbo.is_constrain_exist('10,175')   
  


还是不行  
服务器: 消息 208,级别 16,状态 1,行 1  
对象名 'dbo.is_constrain_exist' 无效。 
 

首先你的函数创建成功了吗?


命令已成功完成。

#10


select a434222.is_constrain_exist('10,175')  

#11


前面加你的这个函数的所有者

#12


引用 10 楼 happyflystone 的回复:
select a434222.is_constrain_exist('10,175')  


好了 好了!   哈哈  谢谢你!

不过现在死循环了好像!  至少是运行了 呵呵 散分!  我就这些分 全给了 别嫌少

#1


在网上找来这个  也解决不了?难道是我没看懂?~~ 求大家帮助!急死了都


自定义存储过程调自定义函数提示"不是可以识别的函数名"问题2007-07-26 16:44  今天在做项目的时候,需要在一个自己写的sql server存储过程中调用自己写的函数,创建这个存储过程时报错,提示"不是可以识别的函数名",经过研究,调试,发现要想调用自定义的函数,必须该函数所属的用户名,如dbo,写成dbo.你的自定义函数名,这样就可以了。 

#2


select dbo.is_constrain_exist('10,175') 

#3


很明显,报的是函数名不合法,换个简单的试试

#4


引用 2 楼 happyflystone 的回复:
SQL codeselect dbo.is_constrain_exist('10,175') 



还是不行
服务器: 消息 208,级别 16,状态 1,行 1
对象名 'dbo.is_constrain_exist' 无效。

#5


引用 3 楼 changjiangzhibin 的回复:
很明显,报的是函数名不合法,换个简单的试试




不是不合法,是调用不对



create function is_constrain_exist(@food_dot varchar(32)) 
RETURNS varchar(16) 
as  
begin
   return 'asdf'
end


go


select dbo.is_constrain_exist('asdf')
/*
---------------- 
asdf

(所影响的行数为 1 行)
*/

select * from dbo.is_constrain_exist('asdf')

/*
服务器: 消息 208,级别 16,状态 3,行 11
对象名 'dbo.is_constrain_exist' 无效。

*/

drop function is_constrain_exist



#6


引用 4 楼 iwemeada 的回复:
引用 2 楼 happyflystone 的回复:
SQL codeselect dbo.is_constrain_exist('10,175')  
 


还是不行 
服务器: 消息 208,级别 16,状态 1,行 1 
对象名 'dbo.is_constrain_exist' 无效。


首先你的函数创建成功了吗?

#7


happyflystone 你好!

我的SQLSERVER服务是在虚拟主机上的 似乎没有dbo权限 

create function is_constrain_exist(@food_dot varchar(32)) 
RETURNS varchar(16) 
is_constrain_exist函数建立之后 在查询分析器左侧的树菜单里 
名称自动加上了我在虚拟主机上的数据库名 a434222 就是a434222.f_split

是不是和这个有关系啊? 谢谢!

#8


写错了个字
是a434222.is_constrain_exist

#9


引用 6 楼 happyflystone 的回复:
引用 4 楼 iwemeada 的回复:
引用 2 楼 happyflystone 的回复: 
SQL codeselect dbo.is_constrain_exist('10,175')   
  


还是不行  
服务器: 消息 208,级别 16,状态 1,行 1  
对象名 'dbo.is_constrain_exist' 无效。 
 

首先你的函数创建成功了吗?


命令已成功完成。

#10


select a434222.is_constrain_exist('10,175')  

#11


前面加你的这个函数的所有者

#12


引用 10 楼 happyflystone 的回复:
select a434222.is_constrain_exist('10,175')  


好了 好了!   哈哈  谢谢你!

不过现在死循环了好像!  至少是运行了 呵呵 散分!  我就这些分 全给了 别嫌少