存储过程求助,无法插入
ALTER PROCEDURE [dbo].[CreateResult]
@UserName varchar(50),
@TableName varchar(255),--表名
@StrWhere nvarchar(1000)='' ,--查询条件
@resultTable varchar(50)
AS
declare @str nvarchar(4000)
declare @searchtable varchar(50)
set @searchtable=@UserName+'_searchTable'
if @StrWhere !=''
set @str='select * from '+@TableName +' where '+@StrWhere
else
set @str='select * from '+@TableName
set @str='insert into '+@resultTable+' '+@str+' update '+@searchtable+' set result=1 where resultTable='+@resulTable+''
exec (@str)
消息 137,级别 15,状态 2,过程 CreateResult,第 17 行
必须声明标量变量 "@resulTable"。
[最优解释]
ALTER PROCEDURE [dbo].[CreateResult]
@UserName varchar(50),
@TableName varchar(255),--表名
@StrWhere nvarchar(1000)='' , --查询条件
@resultTable varchar(50)
AS
declare @str nvarchar(4000)
declare @searchtable varchar(50)
set @searchtable=@UserName+'_searchTable'
if @StrWhere !=''
set @str='select * from '+@TableName +' where '+@StrWhere
else
set @str='select * from '+@TableName
set @str='insert into '+@resultTable+' '+@str+'; update '+@searchtable+' set result=1 where resultTable='''+@resultTable+''''
exec (@str)
[其他解释]
你先print @str出来看看,貌似你的语法有问题。
ALTER PROCEDURE [dbo].[CreateResult]
@UserName VARCHAR(50) ,
@TableName VARCHAR(255) ,--表名
@StrWhere NVARCHAR(1000) = '' , --查询条件
@resultTable VARCHAR(50)
AS
DECLARE @str NVARCHAR(4000)
DECLARE @searchtable VARCHAR(50)
SET @searchtable = @UserName + '_searchTable'
IF @StrWhere != '' SET @str = 'select * from ' + @TableName + ' where '
+ @StrWhere
ELSE
SET @str = 'select * from ' + @TableName
SET @str = 'insert into ' + @resultTable + ' ' + @str + ' update '
+ @searchtable + ' set result=1 where resultTable=' + @resultTable
+ ''
EXEC (@str)
[其他解释]
在执行完这条语句的时候
set @str='select * from '+@TableName
把变量打印出来看一下,再执行一下打印出来的sql 看哪出问题了
如果没问题再打印下一条sql
[其他解释]
exec先最好先print出来看字串,放到查询分析器里一看就知道问题所在
------其他解决方案--------------------
哦,resultTable不小心改错了。问题是,无法执行更新操作!
[其他解释]
不懂 貌似 没有 insert into select update 这样的语句吧 要不 你先插入 再更新吧
[其他解释]
exec (@str)
换成exec sp_executesql @str
试试
[其他解释]
最后一个@resulTable 少些一个t
@resultTable
[其他解释]
打印出来的确有问题,怎样才能让@resultTable的值带上引号呢?
[其他解释]
正解
[其他解释]
谢谢给位大侠的热新帮助拉!