求一个SQL语句,请高手指教

declare@avarchar(5000)select@a='''0000000093'''declare@bvarchar(5000)select@b=exec('s... declare @a varchar(5000)
select @a='''0000000093'''
declare @b varchar(5000)
select @b= exec('select Column1 from table where Column2 in('+@a+')')
第三行语句是错误的,报错为“关键字 'exec' 附近有语法错误”求高手指教正确的写法
展开
 我来答
crd0605
2012-09-28 · TA获得超过179个赞
知道小有建树答主
回答量:294
采纳率:75%
帮助的人:108万
展开全部
报错是因为exec不能作为子查询使用
create table #table (column1 varchar(5000),column2 varchar(5000))
create table #table1 (column1 int identity(1,1) ,column2 varchar(5000))
insert into #table values ('0000000093','11111')

declare @a varchar(5000)
select @a='0000000093'
exec('insert into #table1 (column2) select Column2 from #table where column1 in ('+@a+')')
declare @b varchar(5000)
select @b=column2 from #table1
select @b

drop table #table1;
drop table #table;
szm341
2012-09-28 · TA获得超过6725个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5087万
展开全部
存储过程赋值语句不能这么写,要用sp_executesql

declare @a varchar(5000)
select @a='0000000093'
declare @b varchar(5000)
exec sp_executesql N'select @c=Column1 from table where Column2 in(@d)',
N'@c varchar(5000) output,@d varchar(5000)',@b output,@a
select @b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cubeice0239
2012-09-28 · TA获得超过1434个赞
知道小有建树答主
回答量:1128
采纳率:66%
帮助的人:784万
展开全部
declare @a varchar(5000)
select @a ='0000000093' --单引号
declare @b varchar(5000)
select @b= 'select Column1 from table where Column2 in (@a)'
select @b = replace(@b, '@a', @a)
print @b --用于debug,仔细观察这里的结果
exec (@b)
更多追问追答
追问
“select @a ='0000000093' --单引号”这个是没问题的,像您这样写查询结果为空的
追答
你是要拿到包含'0000000093'字段的所有记录吗?比如'a0000000093', '0000000093a'?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
靓zhai
2012-09-28 · 超过22用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:59.7万
展开全部
你查出来的数据可能不止一条,那么你应该用一个表装,@b只是一个字段
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式