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

这条语句用参数为什么不可以?
Table1

StudNo         zhuanye             nianji           kecheng     zhuanyeke
1                   CG                       一年级           设计           CG专业课
1                   CG                       一年级           创艺           CG专业课
2                   BA                       二年级           营销           BA专业课
3                   CG                       三年级           英语           CG基础课
4                   CG                       一年级           素描           CG专业课
4                   CG                       一年级           摄影           CG专业课

如何查出不同的学生,符合下面条件:

必须nianji为一年级,zhuanye为CG,所选专业课zhuanyeke(为CG专业课)数> =2的不同学生,列表后如下:

StudNo         zhuanye     zhuanyeke
1                   CG               CG专业课      
4                   CG               CG专业课

SQL语句如下:
如果直接在数据库中写可以直接查询出,

select   distinct   StudNo,zhuanye,zhuanyeke   from   tablename   where   StudNo
in(select   StudNo   from   tablename   group   by   StudNo   having   count(*)> =2)   and  
nianji= '一年级 '   and   zhuanye= 'CG '

如果在ADOQuery1中用参数并已连好数据库,参数返回值的字段数却为0

select   distinct   StudNo,zhuanye,zhuanyeke   from   tablename   where   StudNo
in(select   StudNo   from   tablename   group   by   StudNo   having   count(*)> =2)   and  
nianji=:nianji   and   zhuanye=:zhuanye

请问这是为何?

------解决方案--------------------
declare @nianji as varchar(10)
set nianji = '一年级 '
declare @zhuanye as varchar(10)
set zhuanye = 'CG '


select distinct StudNo,zhuanye,zhuanyeke from tablename where StudNo
in(select StudNo from tablename group by StudNo having count(*)> =2) and
nianji=@nianji and zhuanye=@zhuanye