SQL Server 变量赋值问题点

biu~zhang~go 2019-07-25 09:08:46
还请各位大神帮忙看看,急....
在下列有问题的地方,条件设置为变量,前面的变量将为空值,当我写为固定条件时就能带出正确的变量值。




USE [AIS20190107162230]
GO
/****** Object: Trigger [dbo].[trig_MES_ITEMS] Script Date: 07/25/2019 21:01:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[trig_MES_ITEMS]
on [dbo].[t_ICItemCore] for insert AS
IF EXISTS(SELECT 1 FROM inserted)
begin
declare
@id int, ---记录ID
@C_nuber int ,---记录行号
@newitem_no varchar(200),---新增物料编码

@item_no varchar(200), ---物料编码

@item_unit varchar(80),---物料单位

@model varchar(500), ---规格型号
@barcode_flag varchar(5),---是否条码管理
@create_date date,---创建时间
@item_name varchar(500), ---物料名称
@prd_cus_prdno varchar(300),---原厂料号
@prd_wh_no1 varchar(10),---主要仓位------------NG
@prd_knd varchar(10),---品号属性----------------NG
@prd_check varchar(10),---检验方式
@prd_typ varchar(10),---物料分类--------------NG
@c_item_no varchar(300),---客户物料编码
@fifo_flag varchar(10)---是否启用先进先出

select @newitem_no=FNumber,@id=FItemID from inserted;
select @C_nuber=count(cc.item_no) from MES_ITEMS cc where cc.c_item_no=@newitem_no;

if @C_nuber<=0
begin

----规格型号,物料名称,原厂料号,物料单位,是否条码管控,检验方式,是否先进先出
select @model=aa.FModel,@item_name=aa.FName from T_ICITEM aa
where aa.FNumber=@newitem_no;
select @item_unit=dd.Fname from MES_ITEM_DW dd where dd.FNumber=@newitem_no;------------------有问题的地方
---物料单位
--select @item_unit1=bb.FName from t_MeasureUnit bb where bb.FUnitGroupID=@item_unit;
----是否条码管理
--select @barcode_flag=cc.FName from t_SubMessage cc where cc.FInterID=@barcode_flag;
----检验方式
--select @prd_check=cc.FName from t_SubMessage cc where cc.FInterID=@prd_check;
----是否启用先进先出
--select fifo_flag@=cc.FName from t_SubMessage cc where cc.FInterID=@fifo_flag;

---DZ物料编码,物料单位,规格型号,是否条码管理,物料名称,原厂料号,检验方式,客户物料编码,是否启用先进先出
set @item_no='DZ'+@newitem_no;
insert into MES_ITEMS (item_no,item_unit,model,item_name,c_item_no)
values(@item_no,@item_unit,@model,@item_name,@newitem_no);


end
else
begin
select COUNT(aa.FName) from T_ICITEM aa where aa.FName=@newitem_no;
end
end;
...全文
2011 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿豪不优秀 2019-07-29
  • 打赏
  • 举报
回复
引用 2 楼 二月十六 的回复:
看一下MES_ITEMS这个表里的c_item_no是不是正确
龙建成 2019-07-28
  • 打赏
  • 举报
回复
SQL Server 变量赋值问题点 [问题点数:100分,无满意结帖,结帖人weixin_38801976]
gegey2008 2019-07-28
  • 打赏
  • 举报
回复
感谢大牛!!!!
qq_38173093 2019-07-28
  • 打赏
  • 举报
回复
我这个站SEO应该怎样优化:http://www.kjdao.cn/
biu~zhang~go 2019-07-26
  • 打赏
  • 举报
回复
引用 14 楼 RINK_1 的回复:
你实在不行,就把触发器先改一下,把INSERTED表里的数据插到一张新的物理表里。然后拿这张新表再去处理你现在有问题的逻辑,这个处理不要在触发器里操作。 还有,你现在这个触发器有些问题,如果你是批量插入多条数据时,就只会根据其中一条数据来处理触发器里的逻辑。
我的处理只有一条一条的插入,有线程操作
biu~zhang~go 2019-07-26
  • 打赏
  • 举报
回复
引用 13 楼 二月十六 的回复:
--这样@item_unit是null
SELECT @item_unit=dd.Fname from MES_ITEM_DW dd where dd.FNumber=@newitem_no;
--这样是有值的
SELECT @item_unit=dd.Fname from MES_ITEM_DW dd where dd.FNumber='xxxx';
--这样还是null?
SET @newitem_no = 'xxxx'
SELECT @item_unit=dd.Fname from MES_ITEM_DW dd where dd.FNumber=@newitem_no;
对,就是这个情况....
RINK_1 2019-07-26
  • 打赏
  • 举报
回复
你实在不行,就把触发器先改一下,把INSERTED表里的数据插到一张新的物理表里。然后拿这张新表再去处理你现在有问题的逻辑,这个处理不要在触发器里操作。 还有,你现在这个触发器有些问题,如果你是批量插入多条数据时,就只会根据其中一条数据来处理触发器里的逻辑。
二月十六 2019-07-26
  • 打赏
  • 举报
回复
--这样@item_unit是null
SELECT @item_unit=dd.Fname from MES_ITEM_DW dd where dd.FNumber=@newitem_no;
--这样是有值的
SELECT @item_unit=dd.Fname from MES_ITEM_DW dd where dd.FNumber='xxxx';
--这样还是null?
SET @newitem_no = 'xxxx'
SELECT @item_unit=dd.Fname from MES_ITEM_DW dd where dd.FNumber=@newitem_no;
biu~zhang~go 2019-07-26
  • 打赏
  • 举报
回复
也是不行。。。。很神奇,我把条件变量赋值成固定值了,然后试了一下,插入到另外表里的还是null值0.0.....
二月十六 2019-07-26
  • 打赏
  • 举报
回复
引用 10 楼 biu~zhang~go 的回复:
大牛~你溜了吗???
我不是溜了,我是没啥好想法了…… 总结一下你看是不是这样。 用变量去查询的查不到,但是这个用表里存的这个变量去关联查询能查到,说明变量没问题。 然后把条件写死了,就能查到并且存起来。 不行你把变量赋值成固定值去查询试试。
biu~zhang~go 2019-07-26
  • 打赏
  • 举报
回复
大牛~你溜了吗???
biu~zhang~go 2019-07-26
  • 打赏
  • 举报
回复
引用 8 楼 二月十六 的回复:
这样有值吗,就是把插入的newitem_no值去关联表查询
SELECT * FROM MES_ITEMS JOIN MES_ITEM_DW WHERE FNumber = c_item_no
有的,而且我把触发器里面的条件写死也有值。。。
二月十六 2019-07-26
  • 打赏
  • 举报
回复
这样有值吗,就是把插入的newitem_no值去关联表查询
SELECT * FROM MES_ITEMS JOIN MES_ITEM_DW WHERE FNumber = c_item_no
biu~zhang~go 2019-07-26
  • 打赏
  • 举报
回复
引用 6 楼 二月十六 的回复:
[quote=引用 5 楼 biu~zhang~go 的回复:] [quote=引用 4 楼 二月十六 的回复:] MES_ITEMS 这个表里插入的item_unit值不对是吗? 看看@newitem_no是不是有有特殊字符
SELECT
    @item_unit1 = bb.FName
FROM
    t_MeasureUnit bb
WHERE
    bb.FUnitGroupID = LTRIM(RTRIM(REPLACE(
                                             REPLACE(
                                                        REPLACE(
                                                                   REPLACE(REPLACE(@item_unit, ' ', ''), CHAR(9), ''),
                                                                   CHAR(10), ''
                                                               ), CHAR(13), ''
                                                    ), CHAR(32), ''
                                         )
                                 )
                           );
不好意思,可能是我发布信息不够准确,是这个位置 select @item_unit=dd.Fname from MES_ITEM_DW dd where dd.FNumber=@newitem_no;------------------有问题的地方 有问题。。。。下面那个我注释掉了。[/quote] 上边是我写错了,我知道是这里有问题,换成去掉特殊字符可以了am[/quote] 不行,回来还是空值....
二月十六 2019-07-26
  • 打赏
  • 举报
回复
引用 5 楼 biu~zhang~go 的回复:
[quote=引用 4 楼 二月十六 的回复:] MES_ITEMS 这个表里插入的item_unit值不对是吗? 看看@newitem_no是不是有有特殊字符
SELECT
    @item_unit1 = bb.FName
FROM
    t_MeasureUnit bb
WHERE
    bb.FUnitGroupID = LTRIM(RTRIM(REPLACE(
                                             REPLACE(
                                                        REPLACE(
                                                                   REPLACE(REPLACE(@item_unit, ' ', ''), CHAR(9), ''),
                                                                   CHAR(10), ''
                                                               ), CHAR(13), ''
                                                    ), CHAR(32), ''
                                         )
                                 )
                           );
不好意思,可能是我发布信息不够准确,是这个位置 select @item_unit=dd.Fname from MES_ITEM_DW dd where dd.FNumber=@newitem_no;------------------有问题的地方 有问题。。。。下面那个我注释掉了。[/quote] 上边是我写错了,我知道是这里有问题,换成去掉特殊字符可以了am
biu~zhang~go 2019-07-26
  • 打赏
  • 举报
回复
引用 4 楼 二月十六 的回复:
MES_ITEMS 这个表里插入的item_unit值不对是吗? 看看@newitem_no是不是有有特殊字符
SELECT
    @item_unit1 = bb.FName
FROM
    t_MeasureUnit bb
WHERE
    bb.FUnitGroupID = LTRIM(RTRIM(REPLACE(
                                             REPLACE(
                                                        REPLACE(
                                                                   REPLACE(REPLACE(@item_unit, ' ', ''), CHAR(9), ''),
                                                                   CHAR(10), ''
                                                               ), CHAR(13), ''
                                                    ), CHAR(32), ''
                                         )
                                 )
                           );
不好意思,可能是我发布信息不够准确,是这个位置 select @item_unit=dd.Fname from MES_ITEM_DW dd where dd.FNumber=@newitem_no;------------------有问题的地方 有问题。。。。下面那个我注释掉了。
二月十六 2019-07-26
  • 打赏
  • 举报
回复
MES_ITEMS 这个表里插入的item_unit值不对是吗? 看看@newitem_no是不是有有特殊字符
SELECT
    @item_unit1 = bb.FName
FROM
    t_MeasureUnit bb
WHERE
    bb.FUnitGroupID = LTRIM(RTRIM(REPLACE(
                                             REPLACE(
                                                        REPLACE(
                                                                   REPLACE(REPLACE(@item_unit, ' ', ''), CHAR(9), ''),
                                                                   CHAR(10), ''
                                                               ), CHAR(13), ''
                                                    ), CHAR(32), ''
                                         )
                                 )
                           );
biu~zhang~go 2019-07-26
  • 打赏
  • 举报
回复
引用 2 楼 二月十六 的回复:
看一下MES_ITEMS这个表里的c_item_no是不是正确
你好,c_item_no列是对呀,也能插入数据。。。。我又疑问的地方是@item_unit这个变量无法将查询结果赋值
二月十六 2019-07-26
  • 打赏
  • 举报
回复
看一下MES_ITEMS这个表里的c_item_no是不是正确
biu~zhang~go 2019-07-26
  • 打赏
  • 举报
回复
引用 20 楼 qq904050844 的回复:
厉害,棒棒棒
这位大牛知道什么原因吗?虽然换了方法,但是问题点还是想知道一下
加载更多回复(4)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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