读书人

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

发布时间: 2012-03-12 12:45:33 作者: rapoo

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

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+'')

读书人网 >SQL Server

热点推荐