set @sqlstr='insert into #tmp (oldid) '+@sqlstr 
execute(@sqlstr) 

解决方案 »

  1.   

    exec('select * from '+@tableName+' where '+@fieldName+' = '+@fieldValue)
      

  2.   

    传的参数只能是值,不能是表名或字段名用zcrong(海荣)的方法,-动态sql--实现你的要求
      

  3.   

    zcrong(海荣)能不能说的清楚点  因为我对sql不是很熟悉。
    如果按照你这么写的话
    我如何把tablename和fieldname的值传到sql中
      

  4.   

    为什么要用传值来解决啊!这样就可以啊!string tableName = "Table1";
    string fieldName = "Field1";
    string fieldValue = "Value1";sql = "select * from " + tableName + " where " + fieldName + " = " + fieldValue";然后再执行sql语句完全可以啊
      

  5.   

    mazekui(悠悠春竹)老大  我是想做成通用的函数 通过传递函数参数来分别实现的。
    而且我想写成@value的方式,这样比较安全。
      

  6.   

    to zcrong(海荣)  而且我是select 不是insert
      

  7.   

    create proc test
    @tablename varchar(20),
    @fieldname varchar(20),
    @fieldvalue varchar(50)
    as
    declare @sql varchar(100)
    set @sql ='select * from '+@tableName+' where '+@fieldName+' = '+@fieldValue
    exec(@sql)
    go
      

  8.   

    难道LoveCherry(最讨厌你们这些要代码的了,一点技术含量都灭有) 用的存储过程?
    在sql中不能设置的tablename和fieldname在存储过程中就可以直接设置了吗
      

  9.   

    哦!原来如此那就用exec(@sql)
    动态执行就可以
      

  10.   

    能具体解释一下吗
    小弟是菜鸟  我现在就想在.net中实现这样的功能。至于什么动态sql 是怎么写的,怎么用的,小弟都不知道
    最好给点实现的代码。
    谢谢大家了!
      

  11.   

    换成 sql = "select * from @tableName where ? = ?" 试试,OleDb .NET Provider不支持命名的参数,只支持?AddParameter()时注意参数传入的顺序与sql语句中相符
      

  12.   

    换成 sql = "select * from ? where ? = ?" 试试,OleDb .NET Provider不支持命名的参数,只支持?AddParameter()时注意参数传入的顺序与sql语句中相符