CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

我写了个内部函数,但是提示‘不是有效的标识符。’,请高手解决

楼主superreset(蓝火)2004-02-01 14:18:29 在 MS-SQL Server / 基础类 提问

老是提示◎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'
  • 用户标识符

关键词

  • 函数
  • sql
  • myid
  • returnvar
  • mytable
  • hh
  • varchar
  • numeric
  • declare
  • convert

得分解答快速导航

  • 帖主:superreset

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo