存储过程出错,提示必须声明变量 '@Rec'。
存储过程出错,提示必须声明变量 '@Rec'。
CREATE Procedure C_ShowMessage
(
@ClassId int,
@Rec int output
)
AS
DECLARE @TableName nvarchar(20)
SELECT @TableName = 'Message'+CAST(@ClassId/7000 AS NVARCHAR)
EXEC('SELECT @Rec = count(*) From '+@TableName+' Where ClassId='+@ClassId)
EXEC('SELECT [Id],[Name],Content,AddTime From '+@TableName+' Where ClassId='+@ClassId+' Order By AddTime Desc')
GO
问题点数:20、回复次数:2Top
1 楼CrazyFor(冬眠的鼹鼠)回复于 2003-12-03 17:56:51 得分 10
参考:
declare @tcnt int
declare @paras varchar(100)
DECLARE @SQLString NVARCHAR(500)
set @paras ='1,3,5'
set @sqlstring=N'select @cnt=count(*) from sysobjects where id in ('+@paras+')'
set @tcnt=0
execute sp_executesql
@sqlstring,
N'@cnt int output',
@cnt=@tcnt output
select @tcnt
select * from sysobjects
参考:
Create Procedure GetMaxID
@TableName varchar(100), @ID int output
as
begin
declare @sql nvarchar(1000)
set @sql='select @ID = count(ID) from '+@TableName
exec sp_executesql @sql,N'@id int output',@id output
end
Top
2 楼pengdali()回复于 2003-12-03 18:31:00 得分 10
CREATE Procedure C_ShowMessage
@ClassId int,
@Rec int output
AS
DECLARE @TableName nvarchar(20)
SELECT @TableName = 'Message'+CAST(@ClassId/7000 AS NVARCHAR(100))
declare @sql nvarchar(4000)
set @sql=N'SELECT @Rec = count(*) From '+@TableName+' Where ClassId='+@ClassId
exec sp_executesql @sql,N'@Rec int output',@Rec output
EXEC('SELECT [Id],[Name],Content,AddTime From '+@TableName+' Where ClassId='+@ClassId+' Order By AddTime Desc')
GOTop




