用exec 执行exec('select * from '+@table_name+' order by '+@order_name+','+@order_type)

解决方案 »

  1.   

    呵呵!先谢谢 lsxaa(小李铅笔刀)这个大哥了!
    alter procedure p_table_all
    (@table_name varchar(20),@order_name varchar(10),@order_type tinyint)
    --各参数分别是:表名,排序字段名,排序方式(1为顺序,2为逆序)
    as
    if @order_type=1
    exec('select * from '+@table_name+' order by '+@order_name+' desc') else if @order_type=2
    exec('select * from '+@table_name+' order by '+@order_name+' asc') else
    print 'input error!'
    -----
    这样可以执行通过!
    不过下面我想对这个过程完善点,即对输入的表名或排序字段如在数据库中没有或在表中没有的话则给出错误提示如上的print 'input error!',能否做到呢?谢谢
      

  2.   

    可以根据@@error判断啊~~判断@@error的值是否等于没有表或字段时的错误值来显示。
      

  3.   

    --是否存在对应的表
    if exists(select * from sysobjects where id=object_id(@table_name))--是否存储对应的字段
    if exists(select * from syscolumns where id=object_id(@table_name) and name=@column_name)
      

  4.   

    哦!非常感谢!两位!
    我不但是SQL Server的菜鸟,还是csdn的菜鸟,大家帮助我解决过很多问题,我都没给分--其实是不知道怎么给,请告诉我怎么给你们的分--本帖的最后一个问题!