我写了个内部函数,但是提示‘不是有效的标识符。’,请高手解决
老是提示◎sql那一段不是有效的标识符,请问,怎么解决这个问题
-----------------函数getMaxcode
CREATE function dbo.getMaxcode(@aa int,@myid varchar(20),@mytable varchar(20))
returns varchar(10)
as
--@myid id的字段名(字符串类型)
--@mytable 表的名称
--@aa id的长度
begin
declare @hh varchar(10)
declare @returnvar varchar(10)
declare @sql varchar(500)
set @sql='select @hh=(min(convert(numeric,'+@myid+'))+1) from (select '+@myid+' as '+@myid+' from '+@mytable+' union all select 0) a where convert(numeric,a.'+@myid+')+1 not in (select '+@myid+' from '+@mytable+' )'
exec @sql
set @returnvar=(select REPLICATE('0',(@aa-len(@hh))));
return (@returnvar+@hh)
end
问题点数:0、回复次数:9Top
1 楼Jianli2004(健力)(星是UP来的)回复于 2004-02-01 15:04:16 得分 0
declare @hh varchar(10)
declare @returnvar varchar(10)
declare @sql nvarchar(5000)
set @sql=N'select @xx=(min(convert(numeric,'+@myid+'))+1) from (select '+@myid+' as '+@myid+' from '+@mytable+' union all select 0) a where convert(numeric,a.'+@myid+')+1 not in (select '+@myid+' from '+@mytable+' )'
exec sp_executesql @sql,N'@xx varchar(10)',@hh
Top
2 楼happyflystone(无枪的狙击手)回复于 2004-02-01 15:06:16 得分 0
支持楼上Top
3 楼superreset(蓝火)回复于 2004-02-02 00:13:12 得分 0
先谢谢各位的支持,但是问题还没有解决,因为我的 这个是一个函数
所以会出现以下的提示:
只有函数和扩展存储过程才能从函数内部执行。
sp_executesql 不是扩展存储过程,所以在这里就没有用
Top
4 楼Jianli2004(健力)(星是UP来的)回复于 2004-02-02 00:48:47 得分 0
declare @sql nvarchar(4000)
没有问题啊,我试过,可以执行的Top
5 楼superreset(蓝火)回复于 2004-02-02 02:10:35 得分 0
呵呵,是不是跟我装的sqlserver2000 ,personal版有关Top
6 楼ghosthjt(天煞孤星)回复于 2004-02-02 10:38:21 得分 0
试试这个: exec(@sql) 而不是这个 exec @sqlTop
7 楼licun8223(Toofy)回复于 2004-02-02 11:28:01 得分 0
同意楼上的意见Top
8 楼kingfung(军哥)回复于 2004-04-16 00:43:14 得分 0
在过程名前加上使用者 如 dbo.getMaxcodeTop
9 楼LoveSQL(努力奋斗ing)回复于 2004-04-16 08:31:57 得分 0
execute是不允许用在函数中的,你可以改用存储过程来实现Top
相关问题
- 我使用API函数TrackMouseEvent时,提示"未定义的标识符",到底哪错了?
- 为什么我在page.js文件下写了如下函数,总是提示"缺少标识符"??
- 在函数声明中abstract标识符是起什么作用?
- 设置断点 提示标识符超出范围 怎么会
- 注册客户端(本地)时提示:无效的属性/页面标识符
- 怎么在VB中调用CoCreateGUID这个API函数,我想生成一个唯一的标识符
- 菜鸟疑惑:main主函数能否放在不带标识符的类中。详情请进。
- ■■■■■■■■■■■■■■■■■■■■■■■■error C2065: “VTS_BOOL” : 未声明的标识符 ----请问以上错误提示少了什么包含文件
- 在存储过程里用dbms_lock.sleep(10)编译时提示Error: PLS-00201: 必须说明标识符 'DBMS_LOCK'
- 用户标识符




