读书人

存储过程中可以这样写吗?为什么总是出

发布时间: 2012-03-26 15:46:56 作者: rapoo

存储过程中可以这样写吗?为什么总是出错?
declare @sqlcommand char(200)

select @sqlcommand= 'select '+rtrim(@TableName)+ '.AssessID, '+rtrim(@TableName)+ '.RealPoint, '+rtrim(@TableName)+ '.assessAccord, '+rtrim(@TableName)+ '.ItemComment,AssessItem.ItemName,manager.ManagerName,TotalAssess.CheckComment,TotalAssess.StartTime,TotalAssess.EndTime,TotalAssess.NowTime
from manager,TotalAssess,AssessItem, '+rtrim(@TableName)+ ' where TotalAssess.TotalID= '+rtrim(@TotalID)+ ' and TotalAssess.TotalID=Assess.TotalID and Assess.ManagerID= '+rtrim(@ManagerID)+ ' and Assess.ManagerID=manager.ManagerID and Assess.ItemID=AssessItem.ItemID '

EXEC(@sqlcommand)

.net 2.0的报错信息:
列前缀 'xlglyike ' 与查询中所用的表名或别名不匹配。
列前缀 'xlglyike ' 与查询中所用的表名或别名不匹配。
列前缀 'xlglyike ' 与查询中所用的表名或别名不匹配。
列前缀 'xlglyike ' 与查询中所用的表名或别名不匹配。
列前缀 'AssessItem ' 与查询中所用的表名或别名不匹配。
列前缀 'manager ' 与查询中所用的表名或别名不匹配。
列前缀 'TotalAssess ' 与查询中所用的表名或别名不匹配。
列前缀 'TotalAssess ' 与查询中所用的表名或别名不匹配。
列前缀 'TotalAssess ' 与查询中所用的表名或别名不匹配。

'xlglyike ' 是动态表名

[解决办法]
declare @sqlcommand varchar(8000)

select @sqlcommand= 'select '+rtrim(@TableName)+ '.AssessID, '+rtrim(@TableName)+ '.RealPoint, '+rtrim(@TableName)+ '.assessAccord, '+rtrim(@TableName)+ '.ItemComment,AssessItem.ItemName,manager.ManagerName,TotalAssess.CheckComment,TotalAssess.StartTime,TotalAssess.EndTime,TotalAssess.NowTime from manager,TotalAssess,AssessItem, '+rtrim(@TableName)+ ' where TotalAssess.TotalID= '+str(@TotalID)+ ' and TotalAssess.TotalID=Assess.TotalID and Assess.ManagerID= '+str(@ManagerID)+ ' and Assess.ManagerID=manager.ManagerID and Assess.ItemID=AssessItem.ItemID '

EXEC(@sqlcommand)
[解决办法]
@TotalID int,
@ManagerID int,

这两个变量是整型的 要用str() 函数把它变成字符串才能连接 而且int型也不能用rtrim啊~~~

读书人网 >SQL Server

热点推荐