--@id是int型,要做字符串相加,必须转化。
CREATE PROCEDURE [dbo].[SelectARecord](@ID int,@tblName varchar(200),@fldName varchar(200),@colName varchar(200))  AS
declare @str varchar(255)
set @str='Select ['+@colName+'] from ['+@tblName+'] where '+@fldName+'='+ convert(varchar,@ID)
exec @strGO

解决方案 »

  1.   

    --仔细看你的语句的意思,这样更保险。
    CREATE PROCEDURE [dbo].[SelectARecord](@ID int,@tblName varchar(200),@fldName varchar(200),@colName varchar(200))  AS
    declare @str varchar(255)
    set @str='Select ['+@colName+'] from ['+@tblName+'] where '+@fldName+'='''+ convert(varchar,@ID)+''''
    exec @strGO
      

  2.   

    试了楼上的方法,发现新的错误:
    名称 'Select * from [SJ] where sjId=85' 不是有效的标识符。
      

  3.   

    呵,搞定了,二楼的方法加:exec (@str)