这样一个查询过程,为何传入参数时返回值为空呢?
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_manager]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_manager]
GO
CREATE proc sp_manager
( @kdh varchar(10)='',
@StartDatetime smalldatetime,
@EndDatetime smalldatetime,
@id varchar(20)='',
@pm varchar(150)='',
@djh varchar(14)=''
)
as
declare @sql varchar(6000),@kdh2 varchar(10),@id2 varchar(20),@cfh int,@sl int
delete from T_CILENTINVOICEINANDOUT
set @sql='insert into T_CILENTINVOICEINANDOUT (kdh,id,pm,cfh,shsl) select a.kdh,b.id,c.pm,b.cfh,sum(b.sl) as sl '
set @sql=@sql + ' from t_khdd a,t_khddd b,t_modul c where a.djh=b.djh and b.id=c.id and ( xdrq between '''+cast(@startdatetime as varchar) +''' and '''+cast(@enddatetime as varchar) +''' )'
if @kdh<>''
set @sql=@sql + ' and a.kdh like ''%'+ltrim(@kdh)+'''%'
if @id<>''
set @sql=@sql+ ' and b.id like ''%'+ltrim(@id)+'''%'
if @pm<>''
set @sql=@sql+ ' and c.pm like ''%'+ltrim(@pm)+'''%'
if @djh<>''
set @sql=@sql+ ' and a.djh like ''%'+ltrim(@djh)+'''%'
set @sql=@sql +' group by a.kdh,b.id,c.pm,cfh '
-- print @sql
exec (@sql)
如果所有参数为空(日期除外),那么返回值不会为空。然而一旦传入参数,比如参数@kdh 为1的时候,为何返回值就为空呢?
问题点数:20、回复次数:3Top
1 楼LouisXIV(夜游神)回复于 2006-07-02 18:10:49 得分 20
把if的地方改成下面这样试试看
if @kdh<>''
set @sql=@sql + ' and a.kdh like ''%'+ltrim(@kdh)+'%'''
if @id<>''
set @sql=@sql+ ' and b.id like ''%'+ltrim(@id)+'%'''
if @pm<>''
set @sql=@sql+ ' and c.pm like ''%'+ltrim(@pm)+'%'''
if @djh<>''
set @sql=@sql+ ' and a.djh like ''%'+ltrim(@djh)+'%'''Top
2 楼bee6803(欢笑人生)回复于 2006-07-02 18:10:55 得分 0
解决了,语法错误Top
3 楼bee6803(欢笑人生)回复于 2006-07-02 18:11:25 得分 0
正如上面所说,把符号搞错了。谢谢
Top




