解决方案 »

  1.   

    这个是我写的,但是执行后有错误:
    create or replace procedure select_TA_车票数表2(车次 IN  VARCHAR2,发车日期 IN  DATE,剩余车票  IN   NUMBER,已售车票  OUT NUMBER)
    as 
    begin
      select 剩余票数 into 已售车票
      from TA_车票数表
      where 车次=车次 and 发车日期=发车日期;  
      commit;  
    end select_TA_车票数表2;错误是:
      

  2.   

    查看你的数据吧,两种可能
    1、TA_车票数表中存在同一个车次同一日期相同的记录
    2、TA_车票数表中没有你所查询的这一天的这个车次
      

  3.   

    也可以用下面方式避免出错
    select nvl(max(剩余票数),0) into 已售车票
      from TA_车票数表
      where 车次=车次 and 发车日期=发车日期;  
      

  4.   

    另外你的参数名需要改一下,不要和字段名一样
    比如 车次=车次
    程序分不清哪个是字段,哪个是参数,这种情况下oracle会都当成是字段来处理,因此这是一个恒等式
      

  5.   


    十分感谢你的回答,能帮我看看这个吗?,刚刚接触这些新知识,不是很熟悉。问题如下:想通过存储过程和游标实现查询 TA_车票信息表,计算出所有卖出票数的销售额,多谢赐教。--游标
    CREATE OR REPLACE PROCEDURE select_sold_TA_车票信息表(售票时间1 in date,业务员号1 in varchar2, 销售额 out number)
    AS  
    --declare pnumber number;
    declare cursor cu_price is
       select count(票价),票价
       from TA_车票信息表
       where 售票时间=售票时间1 and 业务员号=业务员号1 and 车票状态='已出票';
       pnumber cu_price%rowtype;
    BEGIN
      open cu_price;
      fetch cu_price into pnumber;
      while cu_price%found loop
        销售额:=pnumber*票价;
      fetch cu_price into 销售额;
      end loop;
      close cu_price;
    END select_sold_TA_车票信息表;