请教个过程参数问题
请教一下,我这个过程中定义了一个变量,这个变量在判断的时候怎么老是为空呢?
当中的那个查询语句查询出来明明有一条数据,但过程的输出消息老是提示:没有检索到需要结算的费用
请指点一下,谢谢了,只有这么多分了 = =~
SQL code
当中的那个查询语句查询出来明明有一条数据,但过程的输出消息老是提示:没有检索到需要结算的费用
请指点一下,谢谢了,只有这么多分了 = =~
SQL code
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 ... )
作者: zhlin3415058 发布时间: 2011-06-11
在企业管理器里用这个查一下:
SQL code
看是否真的有那么一条记录,而且这条记录的 chargeapplyid 不为 NULL.
SQL code
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.
作者: qianjin036a 发布时间: 2011-06-11
引用 1 楼 qianjin036a 的回复:
在企业管理器里用这个查一下:
SQL code
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 ……
在企业管理器里用这个查一下:
SQL code
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 ……
我查过,输出有个编号值
作者: zhlin3415058 发布时间: 2011-06-11
那:
SQL code
估计你还是哪儿有个什么参数写得不对,因为既然语句没问题,那写到存储过程里也不会出现查不到的现象,除非不是那样查的.
SQL code
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 ... )
估计你还是哪儿有个什么参数写得不对,因为既然语句没问题,那写到存储过程里也不会出现查不到的现象,除非不是那样查的.
作者: qianjin036a 发布时间: 2011-06-11
if (@chargeApplyID is null)
上面这句改为if (@@rowcount=0)
上面这句改为if (@@rowcount=0)
作者: cd731107 发布时间: 2011-06-11
引用 3 楼 qianjin036a 的回复:
那:
SQL code
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)
--根据卡……
那:
SQL code
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)
--根据卡……
总算搞清楚了,是因为这个参数类型引起的 @P_CARDNO char, 我的数据字段类型是nvarchar 这里传char就查不出数据,前几天也碰到过一次,太郁闷了!!!
作者: zhlin3415058 发布时间: 2011-06-11