请教一个sqlServer存储过程的编写,业务层由ASP.NET调用,我快崩溃了,多谢!
偶是sql菜鸟,水平不够,请各位大侠支着:
一个类目表中有三个字段:Id(自增),ColumnTypeName,ParentId,如果这个类目是最上级类目,它的ParentId就设为-1,若不是就设为此表中另一个类目的Id,也就是各层目录放在同一个表中,目前我只需要实现两层目录。
现在我编个存储过程想实现以下想法,注释中有
ALTER PROCEDURE GetSiblingColumnType
(
@ColumnTypeId int
)
AS
DECLARE @Parent int
DECLARE @ParentName varchar(50)
SELECT @Parent=ParentId,@ParentName=ColumnTypeName FROM kjcColumnType WHERE Id=@ColumnTypeId --保存上级目录ID和本级目录名
IF @Parent != -1 --如果不是最上级目录
BEGIN
SELECT Id,ColumnTypeName FROM kjcColumnType WHERE Id=@Parent --就返回同级目录的Id和名字
RETURN @ParentName --同时返回上级目录名作为整个栏目名
END
ELSE --否则,即已经是最上级目录
BEGIN
RETURN @ParentName + '-1' --就返回本级目录名作为整个栏目名,为了区别,在其后面添上一个“-1”,让业务层读取substring分析
END
问题是这里有两个SELECT语句,而且有一个在判断段中,不知道ASP.NET业务层中的SqlReader如何去获取数据,或者能否设计一个更加精巧的存储过程,在一个SELECT中就满足需要呢?
我搞了好几天了,就卡在这儿,人家催得急,请大家多多指教,鞠躬多谢!