日期:2014-05-18  浏览次数:20558 次

SQL数据库存储查询操作
表名是不确定的,我这样怎么老说a无效?请问这是怎么回事??希望网友们帮帮忙!!!谢谢!
create proc Proc_TB_TableName_Select 
@FingerprintInformation varchar(MAX),--指纹
@TableName varchar(50) --指纹表名
as
begin transaction
declare @Select varchar(50) 
set @Select='select FingerprintInformationID,TableNameID from '+@TableName +' where FingerprintInformation=' + @FingerprintInformation
exec(@Select)
waitfor delay '00:00:00';--等待秒
commit transaction

exec Proc_TB_TableName_Select '11','a1' --表名为a1,a2,……

------解决方案--------------------
@Select varchar(50) 定大点试试,我觉得应该是50的限制导致query后面的字段被truncate了
------解决方案--------------------
exec(@Select)
改成
print(@Select)

看看输出的SQL是啥?
------解决方案--------------------
SQL code
create proc Proc_TB_TableName_Select  
@FingerprintInformation varchar(MAX),--指纹
@TableName varchar(50) --指纹表名
as
begin transaction
declare @Select varchar(50)  
set @Select='select FingerprintInformationID,TableNameID from ['+@TableName +'] where FingerprintInformation=' + @FingerprintInformation
exec(@Select)
waitfor delay '00:00:00';--等待秒
commit transaction

exec Proc_TB_TableName_Select '11','a1' --表名为a1,a2,……

在FROM 后面用 []将表名 包起来