急急急!!!!关于SQL语句中带 in 的参数如何赋值

smiler007 2005-10-01 01:08:15
一个存储过程的片段

select .... from ..

where ... and F_SubjectCode in (@mKind)


如何给这个@mKind赋值??比如我想要传入值后为 F_SubjectCode in ('101001,'101002','101003')


我是这样写的
...
...
mSubject:='';
for i:=0 to mTString.Count-1 do
begin
mSubject:=mSubject+''''+mTString.Strings[i]+'''';
if i< mTString.Count-1 then mSubject:=mSubject+',';
end;

with AdoStoredProc1. do
begin
Close;
Parameters[1].Value:=...
Parameters[2].Value:=...;
Parameters[3].Value:=mSubject; //这儿对应的是存储过程的@Kind参数
Parameters[4].Value:=...;
Parameters[5].Value:=...;
Parameters[6].Value:=.....;
Open;
end;
能运行,却查询不到结果
急盼解决!!!!
...全文
520 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdsgajxlp 2005-10-06
  • 打赏
  • 举报
回复
up
wywry 2005-10-05
  • 打赏
  • 举报
回复
在多层中使用存储过程好,网络流量少
houfuzhu 2005-10-04
  • 打赏
  • 举报
回复
我是CSDN的小混混,我来接分了,哈~~~
smiler007 2005-10-04
  • 打赏
  • 举报
回复
楼上....我直接用AdoQuery来解决的方法和你站内的介绍是一样的,我在本贴的2楼已说了,只是不能做为存储过程的一个参数....可能林石说的是对的....

3Q!
changechange 2005-10-04
  • 打赏
  • 举报
回复
关于此主题请参考:
关于IN子句用参数代替时,多参数该如何处理?《查询》
http://access911.net/index.asp?u1=a&u2=72FAB51E16DCE9F3
lisiyong 2005-10-04
  • 打赏
  • 举报
回复
只能接分!
yuzhao040283 2005-10-04
  • 打赏
  • 举报
回复
楼主还不如这样写.比如有AAAA,BBBB,CCCC 3个值要负给它.可以先把这个3个值连接成一个字符串.然后再把这个字符串负给它就是了..

hexenzhou 2005-10-03
  • 打赏
  • 举报
回复
只能接分!
海宏AA 2005-10-03
  • 打赏
  • 举报
回复
如果是编号检查的话,我觉得可以检查是否“包含在这个字符串中”。
cdsgajxlp 2005-10-02
  • 打赏
  • 举报
回复
散分撒
cjhchina 2005-10-02
  • 打赏
  • 举报
回复
接分
smiler007 2005-10-02
  • 打赏
  • 举报
回复
嗯...我现在没有用那个存储过程了...用AdoQuery来代替使用....

此贴散分好了...

谢谢楼上
tigerjacky 2005-10-01
  • 打赏
  • 举报
回复
你提到的 with AdoQuery1 do
也是一样的道理 他最终也是生成了一个 SQL 语句提交的.
tigerjacky 2005-10-01
  • 打赏
  • 举报
回复
林石:好像不能这样写的
-----------------------------------------------------------
IN
确定给定的值是否与子查询或列表中的值相匹配。

语法
test_expression [ NOT ] IN
(
subquery
| expression [ ,...n ]
)

-------------------------------------------------------
一个参数在直接执行的SQL语句中只能代表一个表达式,这个表达式 可以是各种类型,你想用一个字符串代表N个表达式.除非是用 动态SQL了.像
exec ('select .. from tbname where name in (' + @mKind + ')')
这样来组合吧.
smiler007 2005-10-01
  • 打赏
  • 举报
回复
再顶一下!
smiler007 2005-10-01
  • 打赏
  • 举报
回复
我把实际值代入,在SQL查询分析器里执行能得到结果
更奇怪的是,如果我用AdoQuery能得到正确的结果

with AdoQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('...);
SQL.Add(mSubject);
SQL.Add('...');
Parameters[].Value:=..;
..
....
Open;
end;
这样是可以的
长江 2005-10-01
  • 打赏
  • 举报
回复

exec('select .... from ..

where ... and F_SubjectCode in (@mKind)')

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧