首页 新闻 会员 周边 捐助

字符串中加入表变量

0
悬赏园豆:20 [已关闭问题]
<P>在一个存储过程中如下使用表变量:</P> <P>declare @tb table(id int identity(1,1), hotel_id varchar(20), member_price decimal)</P> <P>&nbsp;insert into @tb(hotel_id,member_price) select hotel_id,min(member_price) from hotel_room group by hotel_id order by min(member_price) ASC</P> <P>SET @strField = 'select a.hotel_name as hotel_name, a.hotel_id as hotel_id, isnull(a.star, '') as star, isnull(a.sowntown, '') as sowntown, isnull(a.hotel_traffic, '') as hotel_traffic, isnull(a.hotel_intro,'') as hotel_intro, a.is_extend as is_extend,b.member_price as member_price from hotel_detail as a&nbsp; inner join <FONT color=#ff0000>@tb</FONT> as b on a.hotel_id = b.hotel_id '</P> <P>SET @strSQL = @strField + @strWhere + @strOrder --因为怕代码太长@strWhere和@strOrder变量就先不在程序里贴出来了</P> <P>exec (@strSQL)</P> <P>执行存储过程的时候会报错,变量@tb未定义.请问我该怎么使用呢?谢谢!</P>
放飞心情的主页 放飞心情 | 初学一级 | 园豆:130
提问于:2008-07-17 09:56
< >
分享
其他回答(2)
0
你可以把declare @tb的部分也作为字符串拼接到@strSql中。 或者不要拼串,直接写sql。 BTW: 这样拼串可能会有sql注入的漏洞
玉开 | 园豆:8822 (大侠五级) | 2008-07-17 10:55
0
我试了,没有发现错误,是不是你其他地方有问题? 如果方便,最好把完整存储过程和涉及的到的表结构一并贴出,比较容易找到问题
丁学 | 园豆:18730 (专家六级) | 2008-07-17 11:23
0
如果你们的数据库经常用到存储过程,最好建议你下一个调试存储过程的工具。
金鱼 | 园豆:1090 (小虾三级) | 2008-07-18 12:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册