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;
/

解决方案 »

  1.   

    把表zyb的结构贴出来看看
    proc_zy()你这样里需要8个参数 注意参数的类型
      

  2.   

    用PL/SQL测试一下(有断点),不就知道了
      

  3.   

     有out类型 不能直接exec 
    或者用全局变量才能直接exec 
      

  4.   

    DBMS_OUTPUT.PUT();
    DBMS_OUTPUT.PUT_LIne();
    put() 最多只能输出 32767 个byte,
    而put_line() 的最大容量为 1000000个byte
      

  5.   

    dbms_output.put(dw || '单位' || time1 || '时间——' || time2 || '时间成本运行情况'); 改为
    dbms_output.put_line(dw || '单位' || time1 || '时间——' || time2 || '时间成本运行情况');然后利用断点查看一下。
      

  6.   

    在你的exec前面加上
    declare ys,js,.... number;
      

  7.   

    不好意思忘了看了(*^__^*) 嘻嘻…… 
    首先是对于变量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操作来检测该用户的权限)。,
      

  8.   

    是第八题,第九题和第十题也不太会,望指教下,我做的过程是:先建表(6个),在差数据,后来就按要求一步步做,第九题和第十题似乎因为数据库没建对还是怎么回事(我连接Oraclezy数据库时要conn oraclezy/密码 as sysdba才行)完全做不了,忘各位大侠帮帮忙!
      

  9.   

    创建存储过程的时候报错没呢?怎么楼主在sys下创建这个呢?
      

  10.   

    那应该在哪建啊?怎么建?我只会用sysdba的身份登录才能进去,存储过程定义没出大差错,但没出结果,也是这个问题吗?