sql server 一个简单的存储过程

来源:百度知道 编辑:UC知道 时间:2024/06/27 04:47:38
存储过程如下:

ALTER PROCEDURE dbo.P_UPDATE
(
@tableName varchar(50),--表名

)
AS
BEGIN
declare @getsql varchar(200)
declare @maxID varchar(20)
declare @maxHM varchar(20)
declare @upsql varchar(200)

--select @getsql='select '+ @maxID +'= max(id) from '+@tableName --写成这样,虽没报语法错误,但select @getsql 打印不出语句来
--select @getsql='select @maxID = max(id) from '+@tableName --写成这样,下面没法获得变量@maxID的值
--select @getsql

select @maxID=max(ID) from @tableName --写成这样,运行时提示“必须声明表变量 @tableName”

if(LEN(@maxID)=1) select @maxHM=@sqhm+'00000'+@maxID
print @maxHM

exec(@getsql)

END

不能传表名,做动态表名查询,

这句 select @maxID=max(ID) from @tableName
串成字符串用sp_executesql执行吧
像这样

set @getsql='select @maxID = max(id) from '+@tableName
exec sp_executesql @getsql, N'@maxID varchar(20) output',@maxID output
select @maxID

CREATE PROCEDURE dbo.P_UPDATE
(
@tableName varchar(50),--表名

)
AS