FROM @TableName
from后面的表明应该不可以使用变量吧!

解决方案 »

  1.   

    要组合动态的SQL需要用exec('your SQL Statement'),所以你的解决方法应该为:
    exec('Select '+@FileName+"=FileName From "+@TableName+" Where Number=...');
      

  2.   

    to jamfang(大雄) :
    存储过程中提示
    exec('Select '+@FileName+"=FileName From "+@TableName+" Where Number=...');
    在第一个=附近有错,如果去掉@FileName+就正确了,即
    exec('Select FileName From "+@TableName+" Where Number=...');
    但查询的结果无法返回,如何解决,分不够可以在加,只要你开个口
      

  3.   

    exec('Select '+@FileName+"=FileName From "+@TableName+" Where Number=...')
    中为什么不能有返回参数@FileName
      

  4.   

    不好意思呀小李,我不小心把单引号写成双引号了,很久没上来没看见你回复了,sorry.
    正确的应该是:
    declare @FieldName as varchar(20)
    declare @TableName as varchar(20)
    Select @FieldName = 'your field names'
    Select @TableName = 'your table name'
    exec('Select FieldName='+@FieldName+' From '+@TableName + ' where....')
      

  5.   

    to:jamfang(大雄)
    首先非常感谢你还能记着我的这个帖子
    exec('Select FieldName='+@FieldName+' From '+@TableName + ' where....')
    根据条件执行后结果应是只包含一个字段的一条记录,问题是如何在应用程序中得到这个结果
    我的帖子会在你每回一次加20分,先加20
      

  6.   

    不知道SQL Server是怎么弄的,不过一般都是在存储过程执行之前要先注册输出函数,执行之后在用相应的getXXX()取回结果。参见:
        call=conn.prepareCall("{ call addperson (?,?,?) }");
        call.registerOutParameter(3,java.sql.Types.INTEGER);
        call.setString(1, "小路");
        call.setString(2, "女");
        call.execute();    int id=call.getInt(3);
      

  7.   

    to:czb(草中宝)
    谢谢你,是我没表达清除,我的意思是在存储过程中如何实现,也就是说exec('Select Field='+@FieldName+' From '+@TableName + ' where....')将查询结果放在Field中,但是如何返回呢?
    比如
    CREATE PROCEDURE GetName
    @Name varchar(20) OUTPUT
    AS
    SELECT  @Name = Name FROM Employee WHERE ID = 1
    return
    GO
    这样就可以将查询结果通过@Name代回
    如果写成这样:
    CREATE PROCEDURE GetFileName
    @TableName varchar(20),
    @FileName varchar(20) OUTPUT
    AS
    declare @FieldName as varchar(20)
    declare @FieldName1 as varchar(20)
    Select @FieldName = 'FileName'
    Select @FieldName1 = ''
    exec('Select ' + @FieldName1 + ' = ' + @FieldName + ' From ' + @TableName + ' Where  Number = 1')
    Select @FileName = @FieldName1
    return
    GO
    则得到的结果是个空串,也就是说前面Select @FieldName1 = ''给@FieldName1赋什么字符串,返回的就是什么字符串
      

  8.   

    不好意思,我对SQL Server的存储过程不是很熟悉。
      

  9.   

    (得到這個結果的方法有很多種,看你自己的需要了.)
    這將會是我最後一次回答你的問題如果你不屢行你的話.
    用以下方法可得到:
    return exec('Select'+....)
    外面可通過"{?=call getFileName(?,..?)}",registerOutParameter(1,java.sql.Type.INTEGER),執行后getString(1)出來就可以了.
      

  10.   

    jamfang(大雄):呵呵,不是拉,我是广西的,和你一样也有一个西,不过你的名字倒和我的一个湖北同学差不多,他叫马志雄 :)
      

  11.   

    to:jamfang(大雄)
    最近有事,现在补上90
      

  12.   

    CREATE PROCEDURE GetFileName
    @TableName varchar(20),
    @FileName varchar(20) OUTPUT
    ASDeclare @sql varchar(128)Create table #temp (FileName varchar(20))@sql='insert #temp select Filename from '+@TableName+ ' where  Number=...'Exec (@sql)select @FileName= FileName from #tempDrop Table #tempGO