回 帖 发 新 帖 刷新版面

主题:关于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执行就出错了。。

回复列表 (共2个回复)

沙发

字符有问题
set @strsql='select ' + @keyword + ' into temptable from ' + @tableName + ' where  ' + @keyword + '=''' + @keywordvalue + ''''


into 前面是制表符,改成空格就成了

板凳

谢谢了,问题解决了

我来回复

您尚未登录,请登录后再回复。点此登录或注册