我正在向我的SqlCommand编写sql查询,其中一些部分看起来像:
WHERE Path like N'+(select top 1 path from [Paths] where objectcode=@objectCode and objecttype=@objectType)+%' order by path desc,objecttype desc
我没有记录,当我在sql server 2005中编写相同内容时,我有很多行...
where path like (select top 1 path from [Paths] where objectcode='eg' and objecttype='0')+'%'
按路径desc命令
怎么了?
@objectCode是'eg'
我看到了一些东西:
我忘了添加cmd.parameters,并且我没有得到错误,所以我认为sql将此参数看作普通字符串,并且不从那里获取值,所以:
例如:
得到'objectcode=@objectCode'
,
而不是'objectcode='EG''
答案 0 :(得分:2)
SQL不会替换你的@objectcode参数,因为它在字符串文字中。
你需要摆脱字符串文字,使用更像:
WHERE Path like (select top 1 path from [Paths] where objectcode=@objectCode and objecttype=@objectType)+'%' order by path desc,objecttype desc
您是否有理由将子查询括在语音标记中?没必要。