主题:关于EXEC执行字符串的问题
----建表
create table userinfo
(
id int identity(1,1),
username varchar(20),
pwd varchar(20)
)
insert into userinfo (username,pwd)
values ('admin','123')
----存储过程
create proc Isexists
@tableName varchar(20),----表名
@KeyWord varchar(20),-----关键字段名
@KeyWordValue varchar(20),----关键字段值
@ReturnValue int output
as
declare @StrSql varchar(1000)
if exists(select * from sysobjects where name ='temptable')
drop table temptable
set @strsql='select ' + @keyword + ' into temptable from ' + @tableName + ' where ' + @keyword + '=''' + @keywordvalue + ''''
print @strsql
exec (@strsql)
select @returnvalue=count(*) from temptable
return @returnvalue
if exists(select * from sysobjects where name ='temptable')
drop table temptable
----调用存储过程
declare @int int
exec Isexists 'userinfo','username','admin',@int
----错误提示
/*
select username into temptable from userinfo where username='admin'
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: ' ' 附近有语法错误。
服务器: 消息 208,级别 16,状态 1,过程 Isexists,行 17
对象名 'temptable' 无效。
*/
请高手们看下问题出在哪里了。。。。我在EXEC 执行字符串前将字符串输出,没发现问题,但是使用EXEC执行就出错了。。
create table userinfo
(
id int identity(1,1),
username varchar(20),
pwd varchar(20)
)
insert into userinfo (username,pwd)
values ('admin','123')
----存储过程
create proc Isexists
@tableName varchar(20),----表名
@KeyWord varchar(20),-----关键字段名
@KeyWordValue varchar(20),----关键字段值
@ReturnValue int output
as
declare @StrSql varchar(1000)
if exists(select * from sysobjects where name ='temptable')
drop table temptable
set @strsql='select ' + @keyword + ' into temptable from ' + @tableName + ' where ' + @keyword + '=''' + @keywordvalue + ''''
print @strsql
exec (@strsql)
select @returnvalue=count(*) from temptable
return @returnvalue
if exists(select * from sysobjects where name ='temptable')
drop table temptable
----调用存储过程
declare @int int
exec Isexists 'userinfo','username','admin',@int
----错误提示
/*
select username into temptable from userinfo where username='admin'
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: ' ' 附近有语法错误。
服务器: 消息 208,级别 16,状态 1,过程 Isexists,行 17
对象名 'temptable' 无效。
*/
请高手们看下问题出在哪里了。。。。我在EXEC 执行字符串前将字符串输出,没发现问题,但是使用EXEC执行就出错了。。