oracle 两表查询
mssql 过程:
CREATE procedure dbo.PTR_add_commit (@mid VARCHAR(50)
,@UserID VARCHAR(50)
,@code VARCHAR(50)
,@Barcode VARCHAR(50)
,@Qty int
,@Msg VARCHAR(100) output) as
BEGIN
if not exists(select * from pt_wh_goods where Barcode=@Barcode)
begin
set @Msg = '条码(' + ltrim(rtrim(@Barcode)) + ')不存在!'
select @Msg[Msg]
return -1
end
if exists(select * from pt_wh_add_items where Order_code=@code and Barcode=@Barcode)
update pt_wh_add_items set order_qty=order_qty+@Qty where Order_code=@code and Barcode=@Barcode
else
insert into pt_wh_add_items(order_code,barcode,order_Qty) values(@code, @Barcode, @Qty)
select a.Barcode 商品条码, b.Name 商品名称,a.order_qty 数量 from pt_wh_add_items a left join pt_wh_goods b on b.Barcode=a.Barcode
where order_code=@code
RETURN 0
END
我下的相同功能的oracle 过程:
CREATE OR REPLACE PROCEDURE "SYSTEM"."PTR_ADD_COMMIT" (mid
VARCHAR
,UserID varchar2
,code varchar2
,Barcode varchar2
,Qty number
,Msg out varchar2 ) as
jil number;
name varchar2 (50);
Package1 varchar2 (50);
BEGIN
select count(*) into jil from "SYSTEM"."pt_wh_goods" where BARCODE=Barcode;
if jil=0 then
Msg := '条码(' + ltrim(rtrim(Barcode)) + ')不存在!';
end IF;
select count(*) into jil from "SYSTEM"."pt_wh_add_items" where ORDER_CODE=code and BARCODE=Barcode;
if jil>0 THEN
update "SYSTEM"."pt_wh_add_items" set ORDER_QTY=order_qty+Qty where ORDER_CODE=code and BARCODE=Barcode;
else
insert into "SYSTEM"."pt_wh_add_items"(ORDER_CODE,BARCODE,ORDER_QTY) values(code, Barcode, Qty);
END IF;
select a.BARCODE as 商品条码, b.NAME as 商品名称,a.ORDER_QTY as 数量 from "SYSTEM"."pt_wh_add_items" a left join "SYSTEM"."pt_wh_goods" b on b.BARCODE=a.BARCODE
where ORDER_CODE=code;
END;
select a.BARCODE as 商品条码, b.NAME as 商品名称,a.ORDER_QTY as 数量 from "SYSTEM"."pt_wh_add_items" a left join "SYSTEM"."pt_wh_goods" b on b.BARCODE=a.BARCODE
where ORDER_CODE=code;
这里报select 缺少into子句错误,请问这是怎么回事呢?要实现mssql同样的功能,这里怎么写呢?
CREATE procedure dbo.PTR_add_commit (@mid VARCHAR(50)
,@UserID VARCHAR(50)
,@code VARCHAR(50)
,@Barcode VARCHAR(50)
,@Qty int
,@Msg VARCHAR(100) output) as
BEGIN
if not exists(select * from pt_wh_goods where Barcode=@Barcode)
begin
set @Msg = '条码(' + ltrim(rtrim(@Barcode)) + ')不存在!'
select @Msg[Msg]
return -1
end
if exists(select * from pt_wh_add_items where Order_code=@code and Barcode=@Barcode)
update pt_wh_add_items set order_qty=order_qty+@Qty where Order_code=@code and Barcode=@Barcode
else
insert into pt_wh_add_items(order_code,barcode,order_Qty) values(@code, @Barcode, @Qty)
select a.Barcode 商品条码, b.Name 商品名称,a.order_qty 数量 from pt_wh_add_items a left join pt_wh_goods b on b.Barcode=a.Barcode
where order_code=@code
RETURN 0
END
我下的相同功能的oracle 过程:
CREATE OR REPLACE PROCEDURE "SYSTEM"."PTR_ADD_COMMIT" (mid
VARCHAR
,UserID varchar2
,code varchar2
,Barcode varchar2
,Qty number
,Msg out varchar2 ) as
jil number;
name varchar2 (50);
Package1 varchar2 (50);
BEGIN
select count(*) into jil from "SYSTEM"."pt_wh_goods" where BARCODE=Barcode;
if jil=0 then
Msg := '条码(' + ltrim(rtrim(Barcode)) + ')不存在!';
end IF;
select count(*) into jil from "SYSTEM"."pt_wh_add_items" where ORDER_CODE=code and BARCODE=Barcode;
if jil>0 THEN
update "SYSTEM"."pt_wh_add_items" set ORDER_QTY=order_qty+Qty where ORDER_CODE=code and BARCODE=Barcode;
else
insert into "SYSTEM"."pt_wh_add_items"(ORDER_CODE,BARCODE,ORDER_QTY) values(code, Barcode, Qty);
END IF;
select a.BARCODE as 商品条码, b.NAME as 商品名称,a.ORDER_QTY as 数量 from "SYSTEM"."pt_wh_add_items" a left join "SYSTEM"."pt_wh_goods" b on b.BARCODE=a.BARCODE
where ORDER_CODE=code;
END;
select a.BARCODE as 商品条码, b.NAME as 商品名称,a.ORDER_QTY as 数量 from "SYSTEM"."pt_wh_add_items" a left join "SYSTEM"."pt_wh_goods" b on b.BARCODE=a.BARCODE
where ORDER_CODE=code;
这里报select 缺少into子句错误,请问这是怎么回事呢?要实现mssql同样的功能,这里怎么写呢?
...全文
相关推荐
oracle两表关联更新Demo
### Oracle两表关联更新知识点详解#### 一、Oracle关联更新概述在Oracle数据库中,进行数据更新操作时,有时需要根据另一个表中的数据来更新当前表的数据,这就是所谓的“关联更新”。
Oracle将查询的结果放入一张自定义表中并再查询数据
总结来说,Oracle的CTE功能提供了将查询结果暂存为自定义表的能力,可以方便地对数据进行多步处理和分析。
ssh2两表关联
总结来说,SSH2两表关联是在Struts2负责用户交互,Spring管理业务逻辑和依赖,Hibernate实现对象与数据库表映射的基础上,利用Oracle数据库的外键机制,实现多表间的关联查询和操作。
Oracle中在pl/sql developer修改表的2种方法
"Oracle数据库是企业级常用的数据库管理系统,而在使用过程中,经常需要对数据库中的表进行各种操作,包括查询、修改等。本文主要介绍了在Oracle的PL/SQL Developer工具中修改表的两
Oracle递归查询
两表连接递归查询当需要同时查询两个表中的信息时,可以使用两表连接递归查询。


基础和管理
