日期:2014-05-18  浏览次数:20545 次

求一个select top后面接变量的语句。此变量的值由VB的一个Listbox给出。
这个问题好些人提过,但是大家给的代码都是这样的:set       @abc=5
我这的问题跟别人的不一样。

第一个问题是:
我想从VB的一个Listbox取值,赋给@abc,也就是大致这样的:set   @abc=   listbox控件对象.属性
Listbox控件里面有1、2、3、4、5、6...19、20这20个选项。通过选择这20个数字中的一个,从而规定查询返回结果的条数。
希望大家能帮助给出正确完整的代码。也就是说,在如下代码基础上,应该怎么改,才能实现我的要求:

declare       @abc       int      
set       @abc=listbox控件对象.属性   <---我主要是不知道“set       @abc=”后面能否是个变量?如果可以是变量,代码应该怎么写?
exec( 'select       top       '       +       @abc       +       '       *       from       table       ')

第二个问题是:
这段代码前后是否有必要加上CREATE       PROCEDURE....AS和Go?

------解决方案--------------------
VB里应该怎么写我不知道,给你一个思路。

在VB里生成SQL语句,然后再联到数据库进行查询

dim a
dim sql
a=listbox.text

sql= 'select top '+str(a)+ ' * from table '

这样根本不用写什么存储过程,只是一条普通的SQL语句。
------解决方案--------------------
CREATE PROCEDURE test_proc
@n tinyint
AS
DECLARE @sql nchar(100)
SET @sql = ' select top ' + rtrim(@n) + ' * from table '
EXEC(@sql)

GO
------解决方案--------------------
ayzwd(菜鸟老三) ( )

我觉得的方法合适,这样传进去是合法的SQL语句,在SQL里做变量的话,编译不过去
------解决方案--------------------
xxzxwsx() 的可以
用存储过程