日期:2014-05-19  浏览次数:20456 次

一个对我来说很难的问题
我想实现这样一个存储过程,假如有A,B,C,D,E,F这几个字段,从A字段开始,查询出A字段里的值,然后获取A字段值的末位数i,然后再用这个末位数i加上一个传入的参数@var,然后判相加后的值,符合条件就返回该字段名(假如这里第一个字段就符合了条件,就返回字段名A),不符合条件就继续向下查询判断,看联机文档一时半会儿没什么头绪,请大家不吝赐教,这个存储过程该如何写?

------解决方案--------------------
(1)“不符合条件就继续向下查询判断”,这里向下指下条记录还是下个字段?
(2)“符合条件”最好说清楚是什么条件

关于取最后一位和参数@var相加,可以:
Convert(int,SubString(DataLength(A)-1, 1)) + @var
由于上面两个问题不明确,就不好继续写了。
------解决方案--------------------
我新手 帮顶 学习

------解决方案--------------------
ALTER PROCEDURE [dbo].[basTest]

@var int,
@varField varchar(50) output
AS
select * from table1 where (Convert(int,SubString(DataLength(A)-1, 1)) + @var)=条件数值
if(@@RowCount)
begin
@varField= 'A ' return
end
select * from table1 where (Convert(int,SubString(DataLength(B)-1, 1)) + @var)=条件数值
if(@@RowCount)
begin
@varField= 'B ' return
end
select * from table1 where (Convert(int,SubString(DataLength(C)-1, 1)) + @var)=条件数值
if(@@RowCount)
begin
@varField= 'C ' return
end
select * from table1 where (Convert(int,SubString(DataLength(D)-1, 1)) + @var)=条件数值
if(@@RowCount)
begin
@varField= 'D ' return
end
select * from table1 where (Convert(int,SubString(DataLength(E)-1, 1)) + @var)=条件数值
if(@@RowCount)
begin
@varField= 'E ' return
end
select * from table1 where (Convert(int,SubString(DataLength(F)-1, 1)) + @var)=条件数值
if(@@RowCount)
begin
@varField= 'F ' return
end
return ' ';