UPDATE EIT_ARTICLE_UPLOADFILEINFO SET AID=@AID,NC_ID=0 WHERE FILEPATH IN(@FilePathItems)@FilePathItems 的传入值是 'upload/article/2008/05/05/14022281A6FCE75D334560A2C5F89A18.jpg'为什么使用传入值而导致无法更新可是在存储过程中使用以下语句可正常更新(直接固定值)UPDATE EIT_ARTICLE_UPLOADFILEINFO SET AID=@AID,NC_ID=0 WHERE FILEPATH IN('upload/article/2008/05/05/14022281A6FCE75D334560A2C5F89A18.jpg')
1 :普通SQL语句可以用Exec执行 eg: Select * from tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL eg:
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格 当然将字符串改成变量的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --设置字段名 declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确 3. 输出参数
declare @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)
--如何将exec执行结果放入变量中? declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
@ClassID int,
@UserID int,
@Title Varchar(100),
@TITLECOLOR VARCHAR(50),
@IntegrityTitle varchar(300),
@CONTENT text,
@SimpleDescription VARCHAR(300),
@Name varchar(50),
@Email Varchar(50),
@Source Varchar(50),
@WEBSITE VARCHAR(50),
@ClickURL VARCHAR(100),
@IMG VARCHAR(100),
@DEL BIT,
@HITS INT,
@DAYHITS INT,
@WeekHits INT,
@MonthHits INT,
@Recommended BIT,
@Collections INT,
@Auditing BIT,
@Comments BIT,
@CommentsLink BIT,
@AddTime DATETIME,
@FilePathItems varchar(8000),
@NC_ID int
AS
DECLARE @ID INT
insert into eit_Article
(
ClassID,
UserID,
Title,
IntegrityTitle,
TitleColor,
Content,
SimpleDescription,
Name,
Email,
Source,
WebSite,
ClickURL,
IMG,
Del,
Hits,
DayHits,
WeekHits,
MonthHits,
Recommended,
Collections,
Auditing,
Comments,
CommentsLink,
AddTime
)
values
(
@ClassID,
@UserID,
@Title,
@IntegrityTitle,
@TitleColor,
@Content,
@SimpleDescription,
@Name,
@Email,
@Source,
@WebSite,
@ClickURL,
@IMG,
@Del,
@Hits,
@DayHits,
@WeekHits,
@MonthHits,
@Recommended,
@Collections,
@Auditing,
@Comments,
@CommentsLink,
@AddTime
)
IF @@ERROR = 0
BEGIN
GOTO CREATE_ARTICLE
END
DECLARE @AID INT
SET @AID = SCOPE_IDENTITY()
CREATE_ARTICLE:
DELETE FROM EIT_ARTICLE_UploadFileInfo_nc where ID=@NC_ID
IF LEN(@FilePathItems) > 0
BEGIN
UPDATE EIT_ARTICLE_UPLOADFILEINFO SET AID=@AID,NC_ID=0 WHERE FILEPATH IN(@FilePathItems)
END
GO
set @name = 'sysobjects,syscolumns'set @name = replace(@name, ',', ''',''')
exec ('select * from sysobjects where name in ('''+@name+''')')