CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

自定义函数问题!! 急啊,帮忙看看

楼主heroqxn(Brook)2003-11-01 12:24:39 在 MS-SQL Server / 基础类 提问

CREATE   FUNCTION   getTableLines(@tableName   varchar(30))  
  RETURNS   int   AS      
  BEGIN    
   
  declare   @lineCount   int  
   
  exec('select   '+@lineCount+'   =count(*)   FROM   '+@tableName)  
  return   @tableName  
   
  END  
   
  服务器:   消息   443,级别   16,状态   2,过程   getTableLines,行   7  
  在函数内不正确地使用了   'EXECUTE'。 问题点数:80、回复次数:7Top

1 楼heroqxn(Brook)回复于 2003-11-01 12:26:04 得分 0

打错了,应该是return   @lineCountTop

2 楼pengdali()回复于 2003-11-01 12:26:29 得分 40

FUNCTION   不可以用exec这是限制!Top

3 楼txlicenhe(马可)回复于 2003-11-01 12:26:58 得分 40

在自定义函数内不能使用Exec,但你的情况(表名作参数)必须用动态SQL,   改用存储过程吧。  
  Top

4 楼txlicenhe(马可)回复于 2003-11-01 12:27:37 得分 0

另外:  
  非确定性函数  
   
  @@ERROR    
  FORMATMESSAGE    
  NEWID    
  IDENTITY    
  GETANSINULL    
  PATINDEX    
  @@ROWCOUNT    
  GETDATE    
  PERMISSIONS    
  @@TRANCOUNT    
  GetUTCDate    
  SESSION_USER    
  APP_NAME    
  HOST_ID    
  STATS_DATE    
  CHARINDEX    
  HOST_NAME    
  SYSTEM_USER    
  CURRENT_TIMESTAMP    
  IDENT_INCR    
  TEXTPTR    
  CURRENT_USER    
  IDENT_SEED    
  TEXTVALID    
  DATENAME    
  IDENTITY    
  USER_NAME    
  以上这些函数都不能在自定义函数中使用Top

5 楼pengdali()回复于 2003-11-01 12:29:21 得分 0

改用过程吧!  
   
  CREATE   proc   getTableLines   @tableName   varchar(30)  
  AS      
  BEGIN    
   
  declare   @lineCount   int  
   
  declare   @sql   nvarchar(1000)  
  set   @sql=N'select   @lineCount=count(*)   FROM   '+@tableName  
   
  exec   sp_executesql   @sql,N'@lineCount   int   output',@lineCount   output  
   
   
  return   @lineCount  
   
  END  
  go  
   
  --调用:  
  declare   @a   int  
  exec   @a=getTableLines   '表名'  
   
  select   @aTop

6 楼txlicenhe(马可)回复于 2003-11-01 12:30:18 得分 0

CREATE   procedure   getTableLines   @tableName   varchar(30),@LineCount   int   output  
  AS      
  BEGIN    
  declare   @sql   nvarchar(1000)  
  set   @sql   =   'select   @lineCount   =count(*)   FROM   '+@tableName  
  exec   sp_executesql   @sql,N'@linecount   int   output',@linecount   output  
   
  END  
   
  调用:  
  declare   @a   int  
  Exec   getTableLines   '表名',@a   output  
  select   @a  
   
  Top

7 楼heroqxn(Brook)回复于 2003-11-01 12:45:17 得分 0

谢谢各位啦~~  
   
  Top

相关问题

  • 自定义函数的问题,急!!!
  • 自定义函数
  • 自定义函数
  • 自定义函数
  • 自定义函数
  • 问个简单的问题,自定义函数无效?急急
  • SQL Server 2000用户自定义函数问题。急!!!!
  • 急,请问SQLSERVER7。0是不是不支持自定义函数???
  • 怎样给自定义函数,传递数组参数?急!!!!!!
  • 自定义函数参数的问题(急)

关键词

  • 函数
  • sql
  • gettablelines
  • linecount
  • 自定义
  • intexec
  • identity
  • tablename varchar
  • declare
  • 使用

得分解答快速导航

  • 帖主:heroqxn
  • pengdali
  • txlicenhe

相关链接

  • SQL Server类图书

广告也精彩

反馈

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