求sql存储过程!--创建存储过程统计各仓库各种物料的现存数量;

guner_zyy 2017-07-26 09:16:10
CREATE TABLE 仓库
( "仓库编号" VARCHAR2(20) NOT NULL,
"管理员编号" VARCHAR2(20) NOT NULL ,
"仓库名称" VARCHAR2(20),
"地址" VARCHAR2(20),
"电话" NUMBER(11,0),
"物料编号" VARCHAR2(20) NOT NULL ENABLE,
"物料数量" VARCHAR2(20),
CONSTRAINT "PK_仓库" PRIMARY KEY ("物料编号", "仓库编号")
);
...全文
696 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 版主 2017-07-26
  • 打赏
  • 举报
回复
引用 6 楼 guner_zyy 的回复:
create or replace procedure 各仓库各物料存储数量(仓库号 in 仓库.仓库编号%type)
is
仓库名 仓库.仓库名称%type;
物料号 物料.物料编号%type;
物料数 仓库.物料数量%type;
begin
dbms_output.put_line('仓库名称'||', '||'物料名称'||', '||'物料数量');
SELECT 仓库编号,物料编号,sum(物料数量) into 仓库名,物料号,物料数 from  仓库 where 仓库编号=仓库号  group by 仓库编号;
dbms_output.put_line(仓库名||','||物料号||','||','||物料数);
end;
报错不是group by 表达式
不用sum也不用group by 了
create or replace procedure 各仓库各物料存储数量(仓库号 in 仓库.仓库编号%type)
is
仓库名 仓库.仓库名称%type;
物料号 物料.物料编号%type;
物料数 仓库.物料数量%type;
begin
dbms_output.put_line('仓库名称'||', '||'物料名称'||', '||'物料数量');
SELECT 仓库编号,物料编号,物料数量 into 仓库名,物料号,物料数 from  仓库 where 仓库编号=仓库号;
dbms_output.put_line(仓库名||','||物料号||','||','||物料数);
end;
guner_zyy 2017-07-26
  • 打赏
  • 举报
回复
create or replace procedure 各仓库各物料存储数量(仓库号 in 仓库.仓库编号%type)
is
仓库名 仓库.仓库名称%type;
物料号 物料.物料编号%type;
物料数 仓库.物料数量%type;
begin
dbms_output.put_line('仓库名称'||', '||'物料名称'||', '||'物料数量');
SELECT 仓库编号,物料编号,sum(物料数量) into 仓库名,物料号,物料数 from  仓库 where 仓库编号=仓库号  group by 仓库编号;
dbms_output.put_line(仓库名||','||物料号||','||','||物料数);
end;
报错不是group by 表达式
二月十六 版主 2017-07-26
  • 打赏
  • 举报
回复
引用 4 楼 guner_zyy 的回复:
[quote=引用 1 楼 sinat_28984567 的回复:]
CREATE PROC dbo.test
AS
    BEGIN
        SELECT  仓库编号 ,
                物料编号 ,
                SUM(物料数量) AS 总物料数量
        FROM    仓库
        GROUP BY 仓库编号 ,
                物料编号
    END
GO
用pl/sql developer,不能group by 两个字段T T[/quote] 那就按2#大版说的那个查询一下试试,因为这个表的主键就是仓库编号和物料编号,所以这两个的组合都是唯一的,不用聚合函数计算了,直接select,看看效果对吗
guner_zyy 2017-07-26
  • 打赏
  • 举报
回复
引用 1 楼 sinat_28984567 的回复:
CREATE PROC dbo.test
AS
    BEGIN
        SELECT  仓库编号 ,
                物料编号 ,
                SUM(物料数量) AS 总物料数量
        FROM    仓库
        GROUP BY 仓库编号 ,
                物料编号
    END
GO
用pl/sql developer,不能group by 两个字段T T
guner_zyy 2017-07-26
  • 打赏
  • 举报
回复
效果 仓库编号 物料编号 物料数量 c1 w1 22 c1 w2 45 c2 w1 32 c2 w2 32
中国风 2017-07-26
  • 打赏
  • 举报
回复
你要的效果是?
看你的表结构”PRIMARY KEY ("物料编号", "仓库编号")“,直接查询就行了
SELECT  仓库编号 ,
物料编号 ,
物料数量
FROM 仓库


--按仓库查询时才需要汇总
SELECT  仓库编号 ,
SUM(物料数量) AS 总数量
FROM 仓库
GROUP BY 仓库编号
二月十六 版主 2017-07-26
  • 打赏
  • 举报
回复
CREATE PROC dbo.test
AS
    BEGIN
        SELECT  仓库编号 ,
                物料编号 ,
                SUM(物料数量) AS 总物料数量
        FROM    仓库
        GROUP BY 仓库编号 ,
                物料编号
    END
GO
guner_zyy 2017-07-26
  • 打赏
  • 举报
回复
用触发器解决了 谢谢大家
create or replace procedure 各仓库物料存储数量
is
仓库号 仓库.仓库编号%type;
物料号 物料.物料编号%type;
物料数 仓库.物料数量%type;
cursor mycur--(仓库号 in 仓库.仓库编号%type) 
is SELECT 仓库编号,物料编号,物料数量 from  仓库;-- where 仓库编号=仓库号;
begin
--if mycur%isopen=false
--then
open mycur;
--end if;
dbms_output.put_line('仓库编号'||', '||'物料编号'||', '||'物料数量');

loop
fetch mycur into 仓库号,物料号,物料数;
exit when mycur%notfound;
dbms_output.put_line(仓库号||','||物料号||','||物料数);
end loop;
close mycur;
end;
 
jlgxy 2017-07-26
  • 打赏
  • 举报
回复
select *From VW_ServiceReg where Machine_NO='00FK661J31EYMC'

34,590

社区成员

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

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