一个自定义函数的问题。

york_lin 2003-05-19 01:50:38
接着问题:
http://expert.csdn.net/Expert/topic/1803/1803710.xml?temp=.9903681
函数如下:
CREATE FUNCTION GetMaxIDTemp (@tableName varchar(40),@tmp int)
RETURNS int
AS
begin
declare @MaxId bigint
declare @returnId bigint
declare @tmpId bigint
Select @MaxId = Max(id) from @tableName where substring(convert(nvarchar,id),1,1)= convert(varchar,@districtId)
return (@MaxId )
end

出现了
必须声明变量 '@tableName'。的错误
请教
...全文
38 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nik_Amis 2003-05-19
  • 打赏
  • 举报
回复
up
mjhnet 2003-05-19
  • 打赏
  • 举报
回复
准确的说,函数不支持系统存储过程在其内部运行
19191919 2003-05-19
  • 打赏
  • 举报
回复
函数中目前不支持动态语句。只能在存储过程中写
york_lin 2003-05-19
  • 打赏
  • 举报
回复
楼上的好想不对啊
在函数里面就不能执行动态的吗
yoki 2003-05-19
  • 打赏
  • 举报
回复
必须用动态语句
exec' Select @MaxId = Max(id) from '+@tableName +'
where substring(convert(nvarchar,id),1,1)= convert(varchar,@districtId)'
pengdali 2003-05-19
  • 打赏
  • 举报
回复
不行!在函数里不行!

你只能在过程里:

Create Procedure GetMaxID
@TableName varchar(100), @ID int output
as
begin
declare @sql nvarchar(1000)
set @sql='select @ID = max(ID) from '+@TableName
exec sp_executesql @sql,N'@id int output',@id output
end
york_lin 2003-05-19
  • 打赏
  • 举报
回复
错了语句为
Select @MaxId = Max(id) from @tableName where substring(convert(nvarchar,id),1,1)= convert(varchar,@tmpid)

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧