SQL大侠请到这看一下, 我这程序代码怎么在查询分析器里面执行不了?

来源:百度知道 编辑:UC知道 时间:2024/09/25 21:30:19
首先,我觉我这个程序应该没什么错误呀
可是在查询分析器里运行了,一运行就出现错误,请高手指点一下,小弟感激不尽,测试通过了,我另追悬赏分!
高手都来看看吧
我在stud表中建的表如下(我的目的是在找到最大的code后,让code加"1,"插入一个新的内容")
code name
AB001 张三
AB002 李四
AB0001 王五
AB0002 赵六
AB0005 钱七

好了,下面请看一下程序代码
只要能解决,能运行,能达到我的目的

Create FUNCTION getnextcode() RETURNS varchar(20)
AS BEGIN declare @a varchar(20) declare @b int declare @c int declare @new varchar(20)
declare @code varchar(20) select @code = code from stud where len(code) = (select MAX(len(code)) from stud)
declare @len1 int
declare @len2 int
declare @code varchar(20)
set @code='AB0001'
set @a=substring(@code,3,len(@code))
set @len1=len(@a)
set @b=@a
set @len2=len(convert(varchar(20),@b))
set @c=@b+1
declare @tmp int
declare @zero varchar(20)
set @zero=''
set @tmp=1
while @tmp<=@len1-@len2
begin
set @zero=@zero+&#

有多个地方都错了,帮你改过来了,具体功能我没看,只保证语法没有错误。
另外返回值的大小最好设置成varchar(42)以上,否则可能会超过长度。

Create FUNCTION getnextcode()
RETURNS varchar(20)
AS begin
declare @a varchar(20)
declare @b int
declare @c int
declare @new varchar(20)
declare @code varchar(20)
select @code = code from stud where len(code) = (select MAX(len(code)) from stud)
declare @len1 int
declare @len2 int
set @code='AB0001'
set @a=substring(@code,3,len(@code))
set @len1=len(@a)
set @b=@a
set @len2=len(convert(varchar(20),@b))
set @c=@b+1
declare @tmp int
declare @zero varchar(20)
set @zero=''
set @tmp=1
while @tmp<=@len1-@len2
begin
set @zero=@zero+'0'
set @tmp=@tmp+1
end
select @new='ab' +@zero+ convert(varchar(20),@c)
return @new
end