create procedure t_select
/*通用查询*/
(
@TableName   [varchar](50),         -- 表名
@GetFields   [varchar](150) ,       -- 需要返回的字段
@strWhere    [varchar](200) = '',   -- 查询条件 (注意: 不要加 where)
@strOrder    [varchar](200)=''      -- 排序字符串,从web程序输入
)
as
declare @tiaojian [varchar](300)    -- 临时变量,条件
declare @paixu    [varchar](300)    -- 临时变量,排序
declare @sql      [varchar](300)    -- 动态SQL语句if @strWhere=''           --构造条件语句
  begin
    set @tiaojian=''      -- 为空
  end 
else
  begin
    set @tiaojian=' where '''+@strWhere+''''  -- where关键字前后加空格
  endif @strOrder=''          --构造排序语句
  begin
    set @paixu=''        -- 为空
  end 
else
  begin
    set @paixu=' '''+@strOrder+''''          -- 此处实际上只是在web传入的排序语句前加了一个空格
  endset @sql='select '''+@GetFields+''' from ['''+@TableName+''']'''+@tiaojian+@paixu+''''
exec(@sql)
GO
查询分析器中创建时,“右键——执行”提示成功,但在VS2005中程序查询时报错“System.Data.SqlClient.SqlException: 第 1 行: 't_select' 附近有语法错误”
请大侠们帮下忙哈,谢谢啦啊!祝双节快乐!3Q

解决方案 »

  1.   


    set @sql='select '''+@GetFields+''' from ['''+@TableName+''']'''+@tiaojian+@paixu+'''' 
    print @sql --在这个地方加一个print 
    exec(@sql) 
    然后执行。
    exec t_select 'aa','bb','cc','dd'select 'bb' from ['aa']' where 'cc' 'dd''
    服务器: 消息 170,级别 15,状态 1,行 1
    第 1 行: ' where ' 附近有语法错误。你会看到错误有很多。
    你自己改一下吧。增加一些经验。提示一下,print 可以很好的输出一些东西。
      

  2.   

    你是不是没设置CommadnType啊?