求一个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' 附近有语法错误”求高手指教正确的写法 展开
select @a='''0000000093'''
declare @b varchar(5000)
select @b= exec('select Column1 from table where Column2 in('+@a+')')
第三行语句是错误的,报错为“关键字 'exec' 附近有语法错误”求高手指教正确的写法 展开
4个回答
展开全部
报错是因为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;
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;
展开全部
存储过程赋值语句不能这么写,要用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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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' --单引号
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'?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你查出来的数据可能不止一条,那么你应该用一个表装,@b只是一个字段
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询