请教存储过程(100分)

  • 主题发起人 主题发起人 snpl
  • 开始时间 开始时间
S

snpl

Unregistered / Unconfirmed
GUEST, unregistred user!
1.有一表table里有1-20个字段,如何用存储过程实现,根据输入的参数(数字1-20)插入相应的字段?谢
2.如何用存储过程实现取20个数中的最大6个数,按大小顺序排列,谢
 
1。你说的插入是不是指查询出相应的字段列
2。你这20个数是怎么在数据库里存放的,一条记录里面,还是20条记录里。
 
1,使用exec(sql语句)
2,是字段还是几个数,只是数的话用while循环,是字段的话恐怕不可能,你想啊,光直接几个数都这么麻烦了,要是sql语句可以实现的话,那你可就会拿到大奖了;如果是循环,你可以先找出最大的数,加到另外一个字符串中,同时将原来的字符串中的该数置换为空,继续进行下一步,直到原来的字符串为空
 
1.是不是要这个,有点简单了吧
insert into yourtable (c1,c2,c3,....c20) values(@V1,@V2,@V3,....@V20)
2.你可以组合一个类似
select top 2 * from
(select 2 as Number
union
select 4
union
select 11) a order by Number desc
的语句来做
 
drop procedure p_tt
go

create procedure p_tt
(
@s varchar(50)
)
as
declare @s1 varchar(500)
select @s1='select Pid'
select @s1=@s1+','+[name] from syscolumns where charindex(','+convert(varchar,colid)+',',@s)>0 and id=(select id from sysobjects where name='t_we_station' and type='U')
select @s1=@s1+' from t_we_station'
exec(@s1)

exec p_tt ',2,3,4,5,5,5'
上面的Pid是我表里面的第一个字段,t_we_station是我的表名,colid是系统表的列名,对应你说的1-20,我上面的写的可以实现动态的查询,
但是有一些限制,不过应该可以给楼主一些思路。
 
先取最大。再取比前面小的最大。依次类推
 
多人接受答案了。
 
后退
顶部