日期:2014-05-18  浏览次数:21050 次

exec 执行SQL出错问题(在线等候!)
有个过程(op_InsertInto)用来处理表和表记录之间的Insert,
动态生成Insert语句后用Exec   @strSQL执行出错,提示信息:
The   name   'Insert   into   [EA].dbo.SPC_MAKING_ASSEMBLY(SMA_SMM_ModID,SMA_FillDate,SMA_APOS,SMA_PName)    
Select   SMA_SMM_ModID,SMA_FillDate,SMA_APOS,SMA_PName   From   SPC_MAKING_ASSEMBLY   where   SMA_ID=116832 '   is   not   a   valid   identifier.

但将上述单引号中的语句Copy到查询分析器中执行竟然OK,问题会出在哪儿呢?跟贴的路过的大虾请指点!

------解决方案--------------------
语句没什么错误,整体的语句是怎样的?
------解决方案--------------------
在字符串中使用 '号时,应该写成 ' '

另外在查询分析器中,有时在当编码的字符全部是数字时,可以不用加 '
会不会是这里出了问题


------解决方案--------------------
exec @strSQL
你把它改成 print @strSQL
看看打出来的字符串能不能执行都知道那里问题了
------解决方案--------------------
@strSourceTable As Varchar(50),存储过程里表名不支持的.可以这样写 @strSourceTable As sysname.调用数据库表名我不知道能不能在参数里写,但是在变量里是可以这样写的( @strSourceTable As sysname),前不久我写ACCESS导入SQLSERVER才写过的。可以实现。如果还不行,等一下我把我的那段代码帖出来,你先调一下看。
------解决方案--------------------
1、exec(@strsql) --加个括号
2、exec sp_executesql @sql


另@strsql 必须是 nvarchar类型。