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
/*通用查询*/
(
@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
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 可以很好的输出一些东西。