莫名其妙的错误:SQL语句
我写了一个存储过程如下:
CREATE PROCEDURE [test]
@flag varchar(1),
@condition varchar(50)=''
as
begin
declare @sqlstr varchar(50),@field varchar(50)
if @flag='1'
begin
set @field='*'
set @sqlstr='select'+@field+'from employee '+' where job_id>10'
exec(@sqlstr)
end
if @flag='2'
begin
set @field='fname,fname,job_id '
set @sqlstr='select '+@field+ ' from employee'+' where job_id>10'
exec(@sqlstr)
end
end
当flag=2时
出现‘Incorrect syntax near 'job''
当我把set @field='fname,fname,job_id ' 改为:
set @field='fname,job_id '时,没有出错
当我把set @sqlstr='select '+@field+ ' from employee'+' where job_id>10'改为:set @sqlstr='select '+@field+ ' from employee'时,也没有出错
头痛,真不知道是哪里的问题!!!!!!
请哪位大虾指点一二
问题点数:100、回复次数:8Top
1 楼wgzhou747217(蔡鸟)回复于 2002-03-01 09:14:32 得分 0
if @flag='2'
begin
set @field='fname,fname,job_id '
set @sqlstr='select '+@field+ ' from employee'+' where job_id> 10'
exec(@sqlstr)
end
end
当flag=2时
出现‘Incorrect syntax near 'job''
当我把set @field='fname,fname,job_id ' 改为:
set @field='fname,job_id '时,没有出错
当我把set @sqlstr='select '+@field+ ' from employee'+' where job_id> 10'改为:set @sqlstr='select '+@field+ ' from employee'时,也没有出错
头痛,真不知道是哪里的问题!!!!!!
请哪位大虾指点一二
Top
2 楼Rewiah(乘长风)回复于 2002-03-01 09:21:31 得分 100
问题有两个:
1、declare @sqlstr varchar(50),50不够,改为200就没有错误了,这个是主要问题。
2、set @field='fname,fname,job_id '有两个fname,虽然不出错,但在客户端处理时会比较麻烦,建议改为
set @field='fname,fname as fname1,job_id '
Top
3 楼Rewiah(乘长风)回复于 2002-03-01 09:24:32 得分 0
再说说你的问题3
你的这个存储过程问题一定头痛了很长时间了,为什么只给20分,给多点可能早解决了!Top
4 楼SQL79(飘忽不定的影子)回复于 2002-03-01 09:31:04 得分 0
job_id可能为关键字!用[job_id]吧!Top
5 楼wgzhou747217(蔡鸟)回复于 2002-03-01 09:31:15 得分 0
好
Rewiah,给你加系统所接受的最高分100Top
6 楼taber(李沉舟)回复于 2002-03-01 09:31:39 得分 0
帮你up一下吧Top
7 楼Rewiah(乘长风)回复于 2002-03-01 09:39:31 得分 0
呵呵,和你开个玩笑,你就当真了?!
关键,对了没有!Top
8 楼wgzhou747217(蔡鸟)回复于 2002-03-01 10:24:12 得分 0
我是新手,不懂的问题很多,所分不敢给大Top




