请 大家 看下这个 简单存储过程怪问题 ?

FSU 2008-01-10 12:30:07
===========存贮过程如下=============

ALTER PROCEDURE YG_UpdateKC

@aID int,
@HTH varchar(20),
@JH varchar(20),
@sl_th numeric(18, 2),--退回数量
@RKSL numeric(18,2)--实际入库数量


AS

UPDATE YG_RKD_MX_ini SET rkrq=getdate() WHERE aID=@aID AND JH=@JH AND HTH=@HTH
---------------插入库存
INSERT INTO YG_RKD_Mx
( aid, HTH, JH, MC, CPMC, SL, SL_JYHG, CZ,BTDJH,SL_JYRB,SL_JYBHG, DW,HH,YWYID,YWY,JYRQ,rkrq,bNew )
SELECT @aid, HTH, JH, MC, CPMC, SL_JYHG+SL_JYRB,SL_JYHG,CZ,BTDJH,SL_JYRB,SL_JYBHG, DW,HH,YWYID,YWY,JYRQ,rkrq,1
FROM YG_RKD_Mx_ini
WHERE (aID=@aID and JH=@JH AND HTH=@HTH) --ywzt=2 检

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

-================以上是存贮过程==============================

执行 exec YG_UpdateKC 802, 'YG07-207', 'GB9877.1-44.5×30×7F', 0, 11
结果:
(所影响的行数为 0 行)

(所影响的行数为 0 行)

如果把变量直接带入测试 则返回所要结果
UPDATE YG_RKD_MX_ini SET rkrq=getdate() WHERE aID=802 AND JH='GB9877.1-44.5×30×7F' AND HTH='YG07-207'

结果:(所影响的行数为 1 行)


=========================
为什么调用存贮过程执行后没有返回结果 ???
注:JH 数据字段长度 200,其他数据测试可以(测试了如果 JH='CEN305840' 正常),是否JH='GB9877.1-44.5×30×7F' 这个字符串有问题?有问题,该怎么处理
...全文
69 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pt1314917 2008-01-10
  • 打赏
  • 举报
回复

@JH varchar(20)这个变量的长度只有20,
而'GB9877.1-44.5×30×7F'这个的长度已经为21了。。很显然最后面一位F会被截除,最后过滤出来的结果肯定就不对了。楼主把这个20改大一点就行了。。
FSU 2008-01-10
  • 打赏
  • 举报
回复
OK,明白 ,糊涂 一时
pt1314917 2008-01-10
  • 打赏
  • 举报
回复

不是很有可能,而是确实是因为这个问题。
楼主可以试下
方法一:
declare @JH varchar(20)
set @jh='GB9877.1-44.5×30×7F'
select @jh

最后查出来的结果是:'GB9877.1-44.5×30×7'
F被截掉了。 。

方法二:
直接查这个字符串的长度:select datalength('GB9877.1-44.5×30×7F')
得到的结果为:21
也就是超过20了。很显然楼主定义的declare @JH varchar(20)是不够的。。

JL99000 2008-01-10
  • 打赏
  • 举报
回复
INSERT INTO YG_RKD_Mx ( aid, HTH, JH, MC, CPMC, SL, SL_JYHG, CZ,BTDJH,SL_JYRB,SL_JYBHG,DW,HH,YWYID,YWY,JYRQ,rkrq,bNew )
SELECT @aid, HTH, JH, MC, CPMC, SL_JYHG+SL_JYRB,SL_JYHG,CZ,BTDJH,SL_JYRB,SL_JYBHG,DW,HH,YWYID,YWY,JYRQ,rkrq,1
FROM YG_RKD_Mx_ini WHERE (aID=@aID and JH=@JH AND HTH=@HTH) --ywzt=2 检

你检查一下通过[LECT @aid, HTH, JH, MC, CPMC, SL_JYHG+SL_JYRB,SL_JYHG,CZ,BTDJH,SL_JYRB,SL_JYBHG,DW,HH,YWYID,YWY,JYRQ,rkrq,1
FROM YG_RKD_Mx_ini WHERE (aID=@aID and JH=@JH AND HTH=@HTH)]取出的记录
是否能插入到表YG_RKD_Mx中的各个字段
zlp321002 2008-01-10
  • 打赏
  • 举报
回复
的确很有可能1楼说的,参数长度问题.楼主按照1楼的测试下.
zlp321002 2008-01-10
  • 打赏
  • 举报
回复
的确很有可能1楼说的,参数长度问题.楼主按照1楼的测试下.

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧