自定义函数问题!! 急啊,帮忙看看
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




