存储过程中传入参数问题  求高手解答
数据表:学号,姓名,班级
我用存储过程实现自动编号  存储过程如下
ALTER proc pro_学生编号 @学生学号 varchar(20)  
output AS BEGIN DECLARE @TempString varchar(20) SELECT @TempString = Max(学生学号)
                                                         FROM InfoId  
IF (@TempString IS NULL)
        SET @TempString = 'Xs2008010201'  
        ELSE
               SET @TempString = 'xs' + cast(cast(substring(@TempString, 3, 10) AS int)+ 1 AS varchar(20))
SET @学生学号 = @TempString END
     但是这样的号如果班级不同   学号会乱掉  比如08级的Xs2008010221,然后我在输入09级的,按这个存储过程就是Xs2008010222,能不能在winform里取得参数放到这个存储过程里,还有里面的Xs能不能也从winform里面获得。
在线等  谢谢各位大侠了。。。。
------解决方案--------------------可以,作为存储过程的入口参数,赋值拼串即可!
------解决方案--------------------存储过程多加一个参数:班级。
修改如下:
ALTER proc pro_学生编号  
@班级 varchar(20)
@学生学号 varchar(20) output  
AS  
BEGIN  
	DECLARE @TempString varchar(20)  	
	--根据班级查询最大学生号
	SELECT	@TempString = Max(学生学号)
	FROM	InfoId  
	WHERE	班级=@班级	
	IF (@TempString IS NULL)
		SET @TempString = 'Xs'+@班级+'010201' 
	ELSE
		SET @TempString = 'Xs' + cast(cast(substring(@TempString, 3, 10) AS int)+ 1 AS varchar(20))	
	SET @学生学号 = @TempString  
END
可能需要修改InfoId表,增加班级字段。