重量级问题:以列为参数的查询如何实现?(100分)

  • 主题发起人 主题发起人 doxpix
  • 开始时间 开始时间
D

doxpix

Unregistered / Unconfirmed
GUEST, unregistred user!
--SQL SERVER 2000
一般的都是在select语句中指定要查询的列,如:
select col1,col2 from mytable1
如果mytable1有10列(col1..col10),我想用参数来实现查询其中任意两列。怎么实现?
DECLARE
@var1 --这里应该声明为什么数据类型?
@var2 --这里应该声明为什么数据类型?
select @var1,@var2 from mytable1

此问题解决了200分。
 
对了,还有:
只要能在服务器端实现就行了,因为用在存储过程里。
 
存储过程
drop proc test
go
create proc test @f1 varchar(20), @f2 varchar(20) as
declare @s varchar(100)
set @s = 'select ' + @f1 +',' + @f2+ ' from mytable'
exec(@s)
其中@f1,@f2就是要输入的两个字段名,具体长度可以改表中最长字段的长度.

试验:
exec test 'bid','bname'
 
很好很好。
还有没有更简单点的。

Small is Beautiful!
 
select ___ from mytable1
^这个地方指定的列好像并不支持动态参数,除非自己生成sql语句,就像bluerain那样做。

谁还有不同意见?
没意见的话200分归bluerain了。
 
要支持动态参数的话,就把select ___ from mytable1中_____的地方作为一个参数,
然后调用的时候自己写需要的字段名,例如
'col1,col2 '
'col1,col2,col3 '

 
另请:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=681021
 
后退
顶部