存储过程中传入参数问题 求高手解答
数据表:学号,姓名,班级
我用存储过程实现自动编号 存储过程如下
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表,增加班级字段。