请看我的存储过程:存储过程中用execute执行字符串str的问题。但该字串中有insert into 时出错,请问什么原因? (100分)

L

lan2001

Unregistered / Unconfirmed
GUEST, unregistred user!
存储过程中用execute执行字符串str的问题
但该字串中有insert into 时出错,请问什么原因?
CREATE PROCEDURE test1 @input_value char(200)
AS
declare @SQLstr char(500)
set @SQLstr= 'select * '+ ' from fyb where ' + @input_value
--set @SQLstr= 'select * insert into ##tmp'+@user+ ' from fyb where ' + @input_value
execute (@SQLstr)
GO
-------
第一个set执行正确,若换做第二个set则不能执行,提示from附近有错误?请教是何原因?
 
应该去掉insert
 
insert into 后面的表名 能用 ##tmp'+@user+ ' 表示吗? 所以错了
 
应该去掉insert
@SQLstr= 'select * into ##tmp'+@user+ ' from fyb where ' + @input_value
若还不行,就是该用户不支持 select into 语法权限,需要指定权限。
 
to mlzhou,我需要insert到临时表中去,所以insert不能去掉
to smallbs,报表名换成合法的表名 mytable 也不行。我想不应该时表明的问题。
 
老兄,用错了吧?好象是insert into tablename select ...吧
 
老兄:
你这句:set @SQLstr= 'select * insert into ##tmp'+@user+ ' from fyb where ' + @input_value
注意:@user没有声明,也没定义。
多了Insert.
 
不知在sql server中语法如何,但是在oracle中,插入临时表的用法是:
insert into temptable select * from table;
 
有两种写法
select * into ##temtable
insert into ##temptable select * from table;
你的不对
 
create table #tablename ......
insert into #tablename select ......(注意字段顺序)
 
对,SQL Server支持那两种语法
MySQL中,
create table tablename1
select * from tablename2
 
谢谢各位,我辛苦了一天原来时多了个insert!谢谢!粗心!
 
多人接受答案了。
 
顶部