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

大侠们,看看这个存储过程解决办法

2012-03-12 
大侠们,看看这个存储过程SQL codeALTER proc [dbo].[proc_GetPrjWhere]@Dptid int null,@Userid int n

大侠们,看看这个存储过程

SQL code
ALTER proc [dbo].[proc_GetPrjWhere]    @Dptid int = null,    @Userid int = null,    @PrjCode varchar(20) = null,    @BCreatdate datetime = null,    @ECreatdate datetime = nullasdeclare @where varchar(200)set @where = '1=1'if(@Dptid is not null and @Userid is null)beginset @where = 'Dptid ='+LTRIM(@Dptid)endif(@Userid is not null and @Dptid is not null)beginset @where ='Userid ='+LTRIM(@Userid)+' and Dptid ='+LTRIM(@Dptid)endif(@PrjCode is not null)beginset @where ='PrjCode = '+@PrjCodeendexec('select * from Info_prjvalues where '+@where+'')


[b][/b]执行后[size=24px][/size]
消息 207,级别 16,状态 1,第 1 行
列名 '有间客栈' 无效。

(1 行受影响)

[解决办法]
set @where ='PrjCode = '''+@PrjCode+''''
[解决办法]
ALTER proc [dbo].[proc_GetPrjWhere]
@Dptid int = null,
@Userid int = null,
@PrjCode varchar(20) = null,
@BCreatdate datetime = null,
@ECreatdate datetime = null
as
declare @where varchar(200)
set @where = '1=1'
if(@Dptid is not null and @Userid is null)
begin
set @where = 'Dptid ='+LTRIM(@Dptid)
end
if(@Userid is not null and @Dptid is not null)
begin
set @where ='Userid ='+LTRIM(@Userid)+' and Dptid ='+LTRIM(@Dptid)
end
if(@PrjCode is not null)
begin
set 'PrjCode = '''+@PrjCode+''''
end
print 'select * from Info_prjvalues where '+@where+'' --print 
exec('select * from Info_prjvalues where '+@where+'')

热点排行