sql plus,为什么过程不能调用?用exec调用时提示说对象sys.proc无效,statement ignored
create or replace procedure proc_zy(
dw in zyb.dwdm%type,
time1 in date,
time2 in date,
ys out number,
js out number,
rz out number,
wjs out number,
wrz out number) is
begin
select ysje,jsje,rzje,ysje-jsje,jsje-rzje
into ys,js,rz,wjs,wrz
from zyb
where dwdm=dw and rzrq between time1 and time2;
dbms_output.put(dw || '单位' || time1 || '时间——' || time2 || '时间成本运行情况');
end proc_zy;
/
create or replace procedure proc_zy(
dw in zyb.dwdm%type,
time1 in date,
time2 in date,
ys out number,
js out number,
rz out number,
wjs out number,
wrz out number) is
begin
select ysje,jsje,rzje,ysje-jsje,jsje-rzje
into ys,js,rz,wjs,wrz
from zyb
where dwdm=dw and rzrq between time1 and time2;
dbms_output.put(dw || '单位' || time1 || '时间——' || time2 || '时间成本运行情况');
end proc_zy;
/
解决方案 »
- oracle 记录 读取 锁定
- 请教一个oracle学习的初级问题
- 左连接改成+的写法,出现ORA-01417: a table may be outer joined to at most one other table错误
- 使用dblink远程读取blob或者clob字段的数据
- (求助)COBOL程序,怎样连接其它Server数据库
- 这个问题真让我头疼!请大家帮帮忙
- 急呀,数据重复问题
- 有关ORALCE中使用SQL*PLUS的问题!!!
- proc、oci在C方面谁的效率高?
- oracle数据库,下面表中,查询出每个相同地址中符合时间差15分钟以内的数据。sql
- 这段代码,触发器中create or replace 怎么没用啊?
- 有没有人熟悉物化视图建分区的语句?
proc_zy()你这样里需要8个参数 注意参数的类型
或者用全局变量才能直接exec
DBMS_OUTPUT.PUT_LIne();
put() 最多只能输出 32767 个byte,
而put_line() 的最大容量为 1000000个byte
dbms_output.put_line(dw || '单位' || time1 || '时间——' || time2 || '时间成本运行情况');然后利用断点查看一下。
declare ys,js,.... number;
首先是对于变量ys,js等,我有定义过:variable ys number,可是不管用,至于dbms那个不管改成什么样都没用的,还有就是断点啦,我不会用啊……我把整个题目要求贴出来
将下面的题目在Oracle11g中实现,并手写纸质版报告一份,包括所有实现功能的SQL*PLUS命令或SQL或PL/SQL语句及运行结果。
新建一个数据库,命名为oraclezy,并完成以下功能:
1) 记录某采油厂对油/水井实施作业时所消耗的成本(命名为作业表zyb)。(作业:可理解为对油/水井进行大修)
2) 成本的消耗包括预算、结算、入账三个状态。
预算:采油队向管理部门提出作业申请,并经管理部门批准后,由管理部门负责录入。
结算:某次作业施工结束后,由管理部门与施工单位共同核算各种成本,由管理部门负责录入。
入账:结算后,财务部门将成本计入采油厂账目,由财务部门录入。
3) 预算状态时需要录入的数据:(★:字符型 ◆数值型 ▲日期型)
★单据号:某一作业项目的编号
★预算单位:指需要对油水井实施作业的采油队 ★井号:需要实施作业的油水井
◆预算金额 ★预算人 ▲预算日期
4) 结算状态需要录入的数据:(★:字符型 ◆数值型 ▲日期型)
调出某条预算记录,录入以下数据:
▲开工日期 ▲完工日期 ★施工单位 ★施工内容
◆ 材料费(要求另外建表单独记录材料消耗的明细)
(★物码 ◆消耗数量 ◆单价)
◆ 人工费 ◆设备费 ◆其它费用
◆ 结算金额(材料费+人工费+设备费+其它费用)
★结算人 ▲结算日期
5) 入账状态需要录入的数据:(★:字符型 ◆数值型 ▲日期型)
调出某条结算记录,录入以下数据:
◆入账金额 ★入账人 ▲入账日期
6) 为了避免出现有歧义的错误,要求定义以下辅助的数据表:(★:字符型)
单位代码表:★单位代码 ★单位名称
油水井表:★井号 ★井别:油井/水井 ★单位代码(表示某口井由哪个单位负责管理)
施工单位表:★施工单位名称
物码表:★物码 ★名称规格 ★计量单位1. 根据对以上题意的理解,利用SQL PLUS,定义所需的数据表,包括定义相关约束条件(主码、外码及其他约束)。
2. 利用SQL PLUS,录入以下相关的基础数据:
单位代码表:1122 采油厂
112201 采油一矿 112202 采油二矿
112201001 采油一矿1队 112201002 采油一矿2队 112201003 采油一矿3队
112202001 采油二矿1队 112202002 采油二矿2队
油水井表: (y001 油 112201001) (y002 油 112201001)
(y003 油 112201002) (s001 水 112201002)
(y004 油 112201003) (s002 水 112202001)
(s003 水 112202001) (y005 油 112202002)
施工单位表:作业公司作业一队 作业公司作业二队 作业公司作业三队
物码表:wm001 材料一 吨 wm002 材料二 米 wm003 材料三 桶 wm004 材料四 袋某作业项目编号 zy2009001
预算单位:采油一矿1队 井号:y001 预算金额:10000.00 预算人:张三 预算日期:2009-5-1
开工日期:2009-5-4 完工日期:2009-5-25 施工单位:作业公司作业一队 施工内容:堵漏
材料费:7000.00(其中材料一:2000.00 材料二:2000.00 材料三:2000.00 材料四:1000.00)
人工费:2500.00 设备费:1000.00 其它费用:1400.00 结算金额:11900.00
结算人:李四 结算日期:2009-5-26
入账金额:11900.00 入账人:王五 入账日期:2009-5-28某作业项目编号 zy2009002
预算单位:采油一矿2队 井号:y003 预算金额:11000.00 预算人:张三 预算日期:2009-5-1
开工日期:2009-5-4 完工日期:2009-5-23 施工单位:作业公司作业二队 施工内容:检泵
材料费:6000.00(其中材料一:2000.00 材料二:2000.00 材料三:2000.00)
人工费:1500.00 设备费:1000.00 其它费用:2400.00 结算金额:10900.00
结算人:李四 结算日期:2009-5-26
入账金额:10900.00 入账人:王五 入账日期:2009-5-28某作业项目编号 zy2009003
预算单位:采油一矿2队 井号:s001 预算金额:10500.00 预算人:张三 预算日期:2009-5-1
开工日期:2009-5-6 完工日期:2009-5-23 施工单位:作业公司作业二队 施工内容:检泵
材料费:6500.00(其中材料一:2000.00 材料二:2000.00 材料三:2500.00)
人工费:2000.00 设备费:500.00 其它费用:1400.00 结算金额:10400.00
结算人:李四 结算日期:2009-5-26
入账金额:10400.00 入账人:王五 入账日期:2009-5-28某作业项目编号 zy2009004
预算单位:采油二矿1队 井号:s002 预算金额:12000.00 预算人:张三 预算日期:2009-5-1
开工日期:2009-5-4 完工日期:2009-5-24 施工单位:作业公司作业三队 施工内容:防砂
材料费:6000.00(其中材料一:2000.00 材料二:2000.00 材料四:2000.00)
人工费:2000.00 设备费:1000.00 其它费用:1600.00 结算金额:10600.00
结算人:李四 结算日期:2009-5-26
入账金额:10600.00 入账人:赵六 入账日期:2009-5-28某作业项目编号 zy2009005
预算单位:采油二矿2队 井号:y005 预算金额:12000.00 预算人:张三 预算日期:2009-5-1
开工日期:2009-5-4 完工日期:2009-5-28 施工单位:作业公司作业三队 施工内容:防砂
材料费:7000.00(其中材料一:2000.00 材料二:2000.00 材料四:3000.00)
人工费:1000.00 设备费:2000.00 其它费用:1300.00 结算金额:11300.00
结算人:李四 结算日期:2009-5-28
3. 利用SQL PLUS查询以下数据:
1) 采油一矿2队2009-5-1到2009-5-28有哪些项目处于结算状态,列出相应材料费明细。
2) 采油一矿2队2009-5-1到2009-5-28总的入账金额。
3) 采油一矿2009-5-1到2009-5-28总的入账金额。
4) 有哪些人员参与了入账操作。
5) 2009-5-1到2009-5-28有结算未入帐的项目。
6) 列出采油一矿2队的所有项目,按入账金额从高到低排列。
7) 列出有哪些单位实施了项目,并计算各单位所有项目结算金额总和。
8) 找出消耗了材料三且消耗超过了2000元的项目,列出相应明细(利用子查询)。
9) 作业公司二队参与了哪些项目。
10) 作业公司一队和二队参与了哪些项目(利用union)。
4. 利用SQL PLUS完成以下操作:
1) 将编号为zy2009005的项目的人工费和结算金额增加100元。
2) 删除已结算未入帐的项目。
5. 利用SQL PLUS进行如下事务处理练习(把下列五条语句作为一个事务处理,只有五条语句全部成功执行才做提交,并给出提示信息;否则就做回滚处理,并给出提示信息):
insert into zyb values('zy2009006','112202002','y005',10000,'张三', '07-01-2009' ,
'07-04-2009','07-25-2009','作业公司作业一队','堵漏',7000,2500,1000,1400,11900,'李四','07-26-2009',11900,'王五','07-28-2009')
insert into clfb values('zy2009006','wm001',200,10)
insert into clfb values('zy2009006','wm002',200,10)
insert into clfb values('zy2009006','wm003',200,10)
insert into clfb values('zy2009006','wm004',100,10)6. 利用SQL PLUS进行如下游标练习:
定义一个游标,用于存放作业表的全部行数据。并打印以下表头和各行数据。
表头:单据号 消耗单位 井号 预算金额 预算人 预算日期 开工日期 完工日期 施工单位 施工内容 材料费 人工费 设备费 其它费用 结算金额 结算人 结算日期 入账金额 入账人 入账日期
执行以上所定义的游标,查看是否能正确输出结果。7. 利用SQL PLUS进行如下视图练习:
利用SQL PLUS定义一个视图,用于保存作业表和材料费表的全部列。
利用SQL PLUS查询该视图,可任意选择查询条件,构造出2个查询。
8. 利用SQL PLUS定义一个存储过程,要求完成以下功能:
生成某单位(单位可以是采油厂或采油矿或采油队)某段时间内的成本运行情况(输入参数:单位代码 起始日期 结束日期)
输出格式 ***单位**时间---**时间成本运行情况
预算金额 结算金额 入账金额 未结算金额 未入账金额
****.** ****.** ****.** ****.** ****.**其中未结算金额=预算金额-结算金额 未入账金额=结算金额-入账金额
9. 利用SQL PLUS针对zyb定义三个触发器,分别完成以下功能:
1) 对zyb插入一行数据时,自动计算并插入结算金额字段(结算金额=材料费+人工费+设备费+其它费用)
2) 当修改作业表的某行数据时自动修改结算金额字段
3) 当删除作业表中一行数据时,自动删除材料费表中相应明细数据
10. 权限管理
利用SQL PLUS新建立一个用户(名称自定义),要求授予他查询/增加/删除/修改 单位代码表/油水井表/施工单位表/物码表的权限并只授予他查询作业表/材料费表的权限,并且利用SQL PLUS对该新建用户进行测试(通过做DML操作来检测该用户的权限)。,