请教一下,我这个过程中定义了一个变量,这个变量在判断的时候怎么老是为空呢?
当中的那个查询语句查询出来明明有一条数据,但过程的输出消息老是提示:没有检索到需要结算的费用
请指点一下,谢谢了,只有这么多分了 = =~
create proc [dbo].[SP_SST_JSDP_JSMX]
(
@P_YYJGDM char,
@P_CARDNO char,
@P_DQBHOO varchar(20),
@P_ERRMSG varchar(50) out
)
as
declare @chargeApplyID varchar(30)
--根据卡号查找第一个未结算的结算申请
SELECT top (1) @chargeApplyID =a.ChargeApplyID FROM dbo.OUTPBILL_ChargeApply AS a
LEFT OUTER JOIN dbo.CARD_Patient AS b ON a.PatientID = b.PatientID
LEFT OUTER JOIN dbo.CARD_Card AS c ON b.CardID = c.CardID
where (a.State = 1) AND (c.CardCode=@P_CARDNO)
if (@chargeApplyID is null)
begin
select @P_ERRMSG='没有检索到需要结算的费用'
return
end
else
...
)
当中的那个查询语句查询出来明明有一条数据,但过程的输出消息老是提示:没有检索到需要结算的费用
请指点一下,谢谢了,只有这么多分了 = =~
create proc [dbo].[SP_SST_JSDP_JSMX]
(
@P_YYJGDM char,
@P_CARDNO char,
@P_DQBHOO varchar(20),
@P_ERRMSG varchar(50) out
)
as
declare @chargeApplyID varchar(30)
--根据卡号查找第一个未结算的结算申请
SELECT top (1) @chargeApplyID =a.ChargeApplyID FROM dbo.OUTPBILL_ChargeApply AS a
LEFT OUTER JOIN dbo.CARD_Patient AS b ON a.PatientID = b.PatientID
LEFT OUTER JOIN dbo.CARD_Card AS c ON b.CardID = c.CardID
where (a.State = 1) AND (c.CardCode=@P_CARDNO)
if (@chargeApplyID is null)
begin
select @P_ERRMSG='没有检索到需要结算的费用'
return
end
else
...
)
SELECT top (1) a.ChargeApplyID FROM dbo.OUTPBILL_ChargeApply AS a
LEFT OUTER JOIN dbo.CARD_Patient AS b ON a.PatientID = b.PatientID
LEFT OUTER JOIN dbo.CARD_Card AS c ON b.CardID = c.CardID
where (a.State = 1) AND (c.CardCode=@P_CARDNO) --这个参数改为实际传到存储过程中的值看是否真的有那么一条记录,而且这条记录的 chargeapplyid 不为 NULL.
create proc [dbo].[SP_SST_JSDP_JSMX]
(
@P_YYJGDM char,
@P_CARDNO char,
@P_DQBHOO varchar(20),
@P_ERRMSG varchar(50) out --这个应该是 output
)
as
declare @chargeApplyID varchar(30)
--根据卡号查找第一个未结算的结算申请
SELECT top (1) @chargeApplyID =a.ChargeApplyID FROM dbo.OUTPBILL_ChargeApply AS a
LEFT OUTER JOIN dbo.CARD_Patient AS b ON a.PatientID = b.PatientID
LEFT OUTER JOIN dbo.CARD_Card AS c ON b.CardID = c.CardID
where (a.State = 1) AND (c.CardCode=@P_CARDNO)
--在这里插入这一句:
select @chargeApplyID
--看有没有输出
if (@chargeApplyID is null)
begin
select @P_ERRMSG='没有检索到需要结算的费用'
return
end
else
...
)
估计你还是哪儿有个什么参数写得不对,因为既然语句没问题,那写到存储过程里也不会出现查不到的现象,除非不是那样查的.
上面这句改为if (@@rowcount=0)
来CSDN的目的达到了,自己查出来问题,很好!其实编程水平就是这么积累出来的.