首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

帮忙看下这个存储过程,解决方法

2012-02-01 
帮忙看下这个存储过程,急!!IF EXISTS (SELECT name FROM sysobjects WHERE name Pr_GetList AND type

帮忙看下这个存储过程,急!!
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'Pr_GetList ' AND type = 'P ') 
  DROP PROCEDURE Pr_GetList 
GO 
CREATE PROCEDURE Pr_GetList 

@iMode char(10), 
@TbName nvarchar(15), 
@iFiled nvarchar(20), 
@sWhere nvarchar(20) 

AS 
begin 
declare @sql varchar(100) 
if @iMode= '1 ' 
if @sWhere!= ' ' 
@sql= 'Select DISTINCT ' + @iFiled + ' from '+ @TbName + 'where ' +@sWhere+ ' order by '+@iFiled 
else 
@sql= 'Select DISTINCT ' + @iFiled + ' from ' + @TbName 
else 
if @sWhere!= ' ' 
@sql= 'Select * from ' + TableName + 'where ' +@sWhere+ ' order by '+@iFiled 
else 
@sql= 'Select * from ' + TableName 
execute @sql 

GO 
怎么老是说: 
服务器: 消息 170,级别 15,状态 1,过程 Pr_GetList,行 13 
第 13 行: '@sql ' 附近有语法错误。 
服务器: 消息 170,级别 15,状态 1,过程 Pr_GetList,行 18 
第 18 行: '@sql ' 附近有语法错误。

[解决办法]
if @sWhere!= ' '
set @sql= 'Select DISTINCT ' + @iFiled + ' from '+ @TbName + 'where ' +@sWhere+ ' order by '+@iFiled

[解决办法]

SQL code
IF EXISTS (SELECT name FROM sysobjects WHERE name =   'Pr_GetList  ' AND type =   'P  ')    DROP PROCEDURE Pr_GetList  GO  CREATE PROCEDURE Pr_GetList  (  @iMode char(10),  @TbName nvarchar(15),  @iFiled nvarchar(20),  @sWhere nvarchar(20)  )  AS  begin    declare @sql varchar(100)    if @iMode=  '1  '   begin     if @sWhere!=  '  '        set @sql=  'Select DISTINCT   ' + @iFiled +   ' from   '+ @TbName +  'where   ' +@sWhere+  ' order by   '+@iFiled      else        set @sql=  'Select DISTINCT   ' + @iFiled +   ' from   ' + @TbName    end  else  begin      if @sWhere!=  '  '        set @sql=  'Select * from   ' + TableName +  'where   ' +@sWhere+  ' order by   '+@iFiled      else        set @sql=  'Select * from   ' + TableName    end  exec(@sql)end
[解决办法]
SQL code
IF EXISTS (SELECT name FROM sysobjects WHERE name =   'Pr_GetList  ' AND type =   'P  ')     DROP PROCEDURE Pr_GetList  GO  CREATE PROCEDURE Pr_GetList  (  @iMode char(10),  @TbName nvarchar(15),  @iFiled nvarchar(20),  @sWhere nvarchar(20)  )  AS  begin  declare @sql varchar(100)  if @iMode=  '1  '  if @sWhere!=  '  '  [color=#FF0000]set [/color]@sql=  'Select DISTINCT   ' + @iFiled +   ' from   '+ @TbName +  [color=#FF0000]' where   '[/color] +@sWhere+  ' order by   '+@iFiled  else  [color=#FF0000]set [/color]@sql=  'Select DISTINCT   ' + @iFiled +   ' from   ' + @TbName  else  if @sWhere!=  '  '  [color=#FF0000]set [/color]@sql=  'Select * from   ' + TableName +  [color=#FF0000]' where   [/color]' +@sWhere+  ' order by   '+@iFiled  else  [color=#FF0000]set [/color]@sql=  'Select * from   ' + TableName  execute @sql  对照红色部分改下再试试 

热点排行