主题:这个存储过成该怎样写
入库登记的处理:
该处理将同时涉及数据表Storage和数据表RegisterIn。一条完整的入库登记数据要求同时包含Storage表与RegisterIn表的全部属性。
由于入库登记可能出现两种类型:
一种是仓库内已有库存记录的同类物品的入库(也就是库存物品信息表Storage中已经分配一个库存物品代码strid的物品);
另一种是没有库存记录的新物品入库登记。
要求在向数据表RegisterIn新增一条入库记录时,n 要针对以上两种不同的情况进行分别处理:
对于已有的库存物品入库:不必生成新的库存物品代码strid,要求使用已存在的库存物品代码,每向RegisterIn表增加一条新数据,Storage表中相应的字段amount_stored(库存数量)的值必须是原有数量再加上现在入库数量的和,而且必须完全保持同步修改。由于该物品已经在Storage表中有描述信息,因此,RegisterIn表增加一条新数据时无须再在Storage内增加描述信息。
对于没有库存记录的新物品入库:必须在Storage表中已有的库存物品代码strid的基础上,由系统自动生成一个不重复的新的strid,并且要将此strid作为RegisterIn表中新数据的strid,Storage表中相应的字段amount_stored(库存数量)的值必须是现在的入库数量,而且也必须完全保持同步修改。
由于该物品在Storage表中没有描述信息,因此,RegisterIn表中每增加一条新数据时都必须在Storage内增加该物品的描述信息。
CREATE PROCEDURE dbo.proc_register_in_old
@strid numeric(5,0),
@unit int ,
@amount_in int ,
@price smallmoney ,
@making_place varchar(20) ,
@who_concerned varchar(20) ,
@datein smalldatetime ,
@memo text
AS
BEGIN
if((select strid from Storage where strid=@strid)!=NUll)
{
select @memo=memo from Storage,
select @memo=memo from Storage
insert into RegisterIn values (@strid,
@unit,
@amount_in,
@price,
@making_place,
@who_concerned,
@datein,
@memo )
}else{
insert into RegisterIn values (
declare @maxstrid numeric(5,0)
select @maxstrid=MAX(strid) from Storage
insert into RegisterIn values (
@maxstrid+1,
@unit,
@amount_in,
@price,
@making_place,
@who_concerned,
@datein,
@memo )
}
END
SYBASE提示SQL查询中的转义序列不对?这是为什么?
该处理将同时涉及数据表Storage和数据表RegisterIn。一条完整的入库登记数据要求同时包含Storage表与RegisterIn表的全部属性。
由于入库登记可能出现两种类型:
一种是仓库内已有库存记录的同类物品的入库(也就是库存物品信息表Storage中已经分配一个库存物品代码strid的物品);
另一种是没有库存记录的新物品入库登记。
要求在向数据表RegisterIn新增一条入库记录时,n 要针对以上两种不同的情况进行分别处理:
对于已有的库存物品入库:不必生成新的库存物品代码strid,要求使用已存在的库存物品代码,每向RegisterIn表增加一条新数据,Storage表中相应的字段amount_stored(库存数量)的值必须是原有数量再加上现在入库数量的和,而且必须完全保持同步修改。由于该物品已经在Storage表中有描述信息,因此,RegisterIn表增加一条新数据时无须再在Storage内增加描述信息。
对于没有库存记录的新物品入库:必须在Storage表中已有的库存物品代码strid的基础上,由系统自动生成一个不重复的新的strid,并且要将此strid作为RegisterIn表中新数据的strid,Storage表中相应的字段amount_stored(库存数量)的值必须是现在的入库数量,而且也必须完全保持同步修改。
由于该物品在Storage表中没有描述信息,因此,RegisterIn表中每增加一条新数据时都必须在Storage内增加该物品的描述信息。
CREATE PROCEDURE dbo.proc_register_in_old
@strid numeric(5,0),
@unit int ,
@amount_in int ,
@price smallmoney ,
@making_place varchar(20) ,
@who_concerned varchar(20) ,
@datein smalldatetime ,
@memo text
AS
BEGIN
if((select strid from Storage where strid=@strid)!=NUll)
{
select @memo=memo from Storage,
select @memo=memo from Storage
insert into RegisterIn values (@strid,
@unit,
@amount_in,
@price,
@making_place,
@who_concerned,
@datein,
@memo )
}else{
insert into RegisterIn values (
declare @maxstrid numeric(5,0)
select @maxstrid=MAX(strid) from Storage
insert into RegisterIn values (
@maxstrid+1,
@unit,
@amount_in,
@price,
@making_place,
@who_concerned,
@datein,
@memo )
}
END
SYBASE提示SQL查询中的转义序列不对?这是为什么?