sql自定义表值函数调用报对象名无效的异常
sql自定义表值函数调用报对象名无效的错误
======这是函数的代码
ALTER FUNCTION [dbo].[f_shjsjyw]
(
-- Add the parameters for the function here
@name nvarchar(max)
)
returns @temp table(F1 varchar(500))
AS
BEGIN
-- Fill the table variable with the rows for your result set
declare @title as varchar(max)
declare @left as int
declare @right as int
set @title=@name
set @left=CHARINDEX('<ul class=''ul_C1''><li class=''li_C1''><table><tr><td width=600>',@title)
set @right=CHARINDEX('</ul>',@title)
while @left>=1
begin
insert @temp values (LEFT(@title,@right+4))
set @title=right(@title,LEN(@title)-@right+2)
set @left=CHARINDEX('<ul class=''ul_C1''><li class=''li_C1''><table><tr><td width=600>',@title)
set @right=CHARINDEX('</ul>',@title)
end
RETURN
END
=========以下是调用语句
select * from [dbo].[f_shjsjyw]('<ul class=''ul_C1''><li class=''li_C1''><table><tr><td width=600><a href=''id=D10010947''>研究开发新型低成本和“绿色”污水处理工艺</a><td class=''li_C1'' align=right>2010-12-21</td></tr></table><li class=''li_C2''> 征集难题内容<a href=''ITEM_D.jsp?id=D10010947''>...</a></ul><ul class=''ul_C1''><li class=''li_C1''><table><tr><td width=600><a href=''ITEM_D.jsp?id=D10010946''>提高9,9—二甲基—2—硝基芴还原纯度</a><td class=''li_C1'' align=right>2010-12-21</td></tr></table><li class=''li_C2''> 征集难题内容: 9,9—二甲基—2—硝基芴还原成9,9—二甲基—的9,9<a href=''id=D10010946''>...</a></ul>')
======以下是报错
消息 208,级别 16,状态 1,第 1 行
对象名 'dbo.f_shjsjyw' 无效。
我直接用函数的语句单独测试是可以的,但是携程函数就报错,不知道是什么原因
------解决思路----------------------
感觉为啥不放程序里面来处理呢?
数据库只提供数据, 让程序来解析, 应该会快些.
------解决思路----------------------
不是同一个数据库吧。
======这是函数的代码
ALTER FUNCTION [dbo].[f_shjsjyw]
(
-- Add the parameters for the function here
@name nvarchar(max)
)
returns @temp table(F1 varchar(500))
AS
BEGIN
-- Fill the table variable with the rows for your result set
declare @title as varchar(max)
declare @left as int
declare @right as int
set @title=@name
set @left=CHARINDEX('<ul class=''ul_C1''><li class=''li_C1''><table><tr><td width=600>',@title)
set @right=CHARINDEX('</ul>',@title)
while @left>=1
begin
insert @temp values (LEFT(@title,@right+4))
set @title=right(@title,LEN(@title)-@right+2)
set @left=CHARINDEX('<ul class=''ul_C1''><li class=''li_C1''><table><tr><td width=600>',@title)
set @right=CHARINDEX('</ul>',@title)
end
RETURN
END
=========以下是调用语句
select * from [dbo].[f_shjsjyw]('<ul class=''ul_C1''><li class=''li_C1''><table><tr><td width=600><a href=''id=D10010947''>研究开发新型低成本和“绿色”污水处理工艺</a><td class=''li_C1'' align=right>2010-12-21</td></tr></table><li class=''li_C2''> 征集难题内容<a href=''ITEM_D.jsp?id=D10010947''>...</a></ul><ul class=''ul_C1''><li class=''li_C1''><table><tr><td width=600><a href=''ITEM_D.jsp?id=D10010946''>提高9,9—二甲基—2—硝基芴还原纯度</a><td class=''li_C1'' align=right>2010-12-21</td></tr></table><li class=''li_C2''> 征集难题内容: 9,9—二甲基—2—硝基芴还原成9,9—二甲基—的9,9<a href=''id=D10010946''>...</a></ul>')
======以下是报错
消息 208,级别 16,状态 1,第 1 行
对象名 'dbo.f_shjsjyw' 无效。
我直接用函数的语句单独测试是可以的,但是携程函数就报错,不知道是什么原因
------解决思路----------------------
感觉为啥不放程序里面来处理呢?
数据库只提供数据, 让程序来解析, 应该会快些.
------解决思路----------------------
不是同一个数据库吧。