高分求助 SQL自定义函数里出错:只有函数和扩展存储过程才能从函数内部执行

shirven 2006-04-05 10:25:13
SQL自定义函数里出错:只有函数和扩展存储过程才能从函数内部执行

create function getnewsid( @talbename varchar(20))
returns varchar(10)
as

begin
declare @serid varchar(1),@maxid float,@bstr varchar(10),@temp varchar(9),@len int,@result varchar(9)
set @serid='A'
select top 1 @serid=serid from serid
set @maxid=0;
declare @sql nvarchar(4000)
set @sql='select @maxid=convert(float,substring(id,2,9)) from ' + @talbename + '
order by convert(float,substring(id,2,9)) desc'

exec sp_executesql @Sql,N'@maxid int out',@maxid out

set @maxid=@maxid+1
set @temp='000000000'
set @len=len(convert(varchar(9),@maxid))
set @result=substring(@temp,1,9-@len)+convert(varchar(10),@maxid)
set @bstr=@serid + @result
return @bstr
end

在调用时
select dbo.getnewsid('news_table')
出错:只有函数和扩展存储过程才能从函数内部执行
请问怎么解决
...全文
712 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
shirven 2006-04-05
我在存储这程里引用这个值
如果用函数,我就可以直接用,
用存储过程,我就要加上
declare @bstr varchar(10)
exec dbo.getnewsid 'news_table',@bstr out
select @bstr
这几句
  • 打赏
  • 举报
回复
WangZWang 2006-04-05
要看你如何调用? 比如用前台程序来调用,有专门的控件来调用proc都很方便的
  • 打赏
  • 举报
回复
xeqtr1982 2006-04-05
是麻烦一些
  • 打赏
  • 举报
回复
shirven 2006-04-05
那我调用的是时候不是比函数麻烦一些
  • 打赏
  • 举报
回复
xeqtr1982 2006-04-05
改写为存储过程。
  • 打赏
  • 举报
回复
WangZWang 2006-04-05
--改为

Create proc getnewsid
@talbename varchar(20),
@bstr varchar(10) out
as
declare @serid varchar(1),@maxid float, @temp varchar(9),
@len int,@result varchar(9)

set @serid='A'
select top 1 @serid=serid from serid
set @maxid=0;
declare @sql nvarchar(4000)
set @sql='select @maxid=convert(float,substring(id,2,9)) from ' + @talbename + '
order by convert(float,substring(id,2,9)) desc'

exec sp_executesql @Sql,N'@maxid int out',@maxid out

set @maxid=@maxid+1
set @temp='000000000'
set @len=len(convert(varchar(9),@maxid))
set @result=substring(@temp,1,9-@len)+convert(varchar(10),@maxid)
set @bstr=@serid + @result
go

-- 调用
declare @bstr varchar(10)
exec dbo.getnewsid 'news_table',@bstr out
select @bstr
  • 打赏
  • 举报
回复
shirven 2006-04-05
有没有办法实现我要实现的功能呢
  • 打赏
  • 举报
回复
xeqtr1982 2006-04-05
用户定义函数不支持动态SQL
  • 打赏
  • 举报
回复
发帖
疑难问题

2.1w+

社区成员

MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
加入社区
帖子事件
创建了帖子
2006-04-05 10:25
社区公告
暂无公告