Exec('Select @Returnvalue=id,title from '+@tbName)
这句话不对。
Exec('Select ' +@Returnvalue+ '=id,title from '+@tbName)
应该是这样吧

解决方案 »

  1.   

    To:7271747(帅的拖网速)
    对不起,刚才大意了~~~
    ----------
    Exec('Select '+@Returnvalue+'=id,title from '+@tbName)
    这样也不行.
      

  2.   

    刚才大意了。。
    你没病吧哈哈~~~~~函数中能不能用exec我不知道,但我要用的话(如果非用不可的话),我会先写存储过程,然后再用函数去调用.
      

  3.   

    CREATE function GetID(@tbName varchar(50))
    returns varchar(8000)
    as
    begin
      declare @ReturnValue varchar(8000)
      Select @Returnvalue=id,title from '+@tbName--用不用動態語句也一樣出錯
    ----因為你這裡返回的不是一個varchar型,而是返回一個列值
      return(@ReturnValue)
    end
      

  4.   

    有個轉換的方法:
    CREATE function GetID(@tbName varchar(50))
    returns varchar(8000)
    as
    begin
     declare @ReturnValue varchar(8000)
    set  @ReturnValue=''
    select @ReturnValue=@ReturnValue+ID+',' from Quotename(@tbName)return(@ReturnValue)
    end
    ---不知道是不是你所想要的
      

  5.   

    To:7271747(帅的拖网速) 你没病吧哈哈~~~~~
    Re:有点,呵呵.
    --------------------------------
    函数中能不能用exec我不知道,但我要用的话(如果非用不可的话),我会先写存储过程,然后再用函数去调用.
    Re:如果每一个动态语句都得用一个存储过程,那不就惨了.
    -------------------------------------------------------------------------------To:talantlee(有了女朋友,就要更加努力)
    Select @Returnvalue=id,title from '+@tbName--用不用動態語句也一樣出錯
    ----因為你這裡返回的不是一個varchar型,而是返回一個列值
    Re:Id不一定为Int型,这是Function返回值不一定就是Int型啊~~~
      

  6.   

    To:talantlee(有了女朋友,就要更加努力)
    select @ReturnValue=@ReturnValue+ID+',' from Quotename(@tbName)
    Re:Quotename 这是什么来着...
      

  7.   

    就你这个语句而言,你的列名是表名是参数,所以类型是sysname
    还有就是如果不是涉及到对象名做参数就不要用动态语句。还有就是动态语句尽量写到一个存储过程
    中,也就是用一个标示位来区分过程中的动态语句
      

  8.   

    QUOTENAME
    返回带有分隔符的 Unicode 字符串
    语法
    QUOTENAME ( 'character_string' [ , 'quote_character' ] )