首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

存储过程,无法插入

2012-12-22 
存储过程求助,无法插入ALTER PROCEDURE [dbo].[CreateResult]@UserName varchar(50),@TableName varchar(2

存储过程求助,无法插入


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的值带上引号呢?
[其他解释]

引用:
SQL code?12345678910111213141516171819ALTER PROCEDURE [dbo].[CreateResult]    @UserName varchar(50),    @TableName varchar(255),--表名    @StrWhere nvarchar(1000)='' , --查询条件    @resultTabl……

正解
[其他解释]
谢谢给位大侠的热新帮助拉!

热点排行