CREATE PROCEDURE ItemInfo_Delete(no IN number,ActionFlag OUT number)
AS
BEGIN
delete from Item where NO = no; ActionFlag := 0;
END ItemInfo_Delete;
/

解决方案 »

  1.   

    是的
    在sql*plus里面执行
    存放在oracle的一个系统表里面。
      

  2.   

    已经创建了。但具体存放在什么地方?
    oracle的那一个系统表里面?
      

  3.   

    select * from user_objects where object_type='PROCEDURE';
     select * from user_source where type='PROCEDURE' and name='...';
      

  4.   

    找个第三方软件编写存储过程是最爽的,比如PLSQLDev.exe。
    sql到oracle的存储过程是不能直接移植的。
    bzszp(SongZip)给出的例子可以。
    建议用第三方软件。
    /
      

  5.   

    暂时不考虑第三方软件。我目前用的是SQL*PULS。
    但执行以下操作的时候:
    CREATE PROCEDURE ItemInfo_Delete(no IN number,ActionFlag OUT number)
    AS
    BEGIN
    delete from Item where NO = no; ActionFlag := 0;
    END ItemInfo_Delete;
    /
    报告过程编译出错。直接查看其状态,显示为:Invalid
    这又是什么原因?
      

  6.   

    show errors看看是什么错误?
      

  7.   

    以下是一个存储过程的建立过程及错误提示,何解?
    *******************************************************************************
    SQL> CREATE OR REPLACE  PROCEDURE "SYSTEM"."ITEMS_EDIT" (_no in number,_name in varchar2,_sum in number,_tickettype in varchar2,_memo in varchar2,ActionFlag out number)
      2  as 
      3  begin
      4  update Items
      5  NO:=_no,NAME:_name,ITEMSUM:=_sum,TICKETTYPE:=_tickettype,MEMO:=_memo;
      6  ActionFlag:=0;
      7  end Items_Edit;
      8  /
    警告: 创建的过程带有编译错误。
    SQL> show error
    没有错误。
    *****************************************************************************
    再求各位帮忙了。看看上面的过程在什么地方导致错误,我的oracle是8.16
      

  8.   

    update Items
    set NO:=_no,NAME:=_name,ITEMSUM:=_sum,TICKETTYPE:=_tickettype,MEMO:=_memo;
      

  9.   

    不行,还是一样的错误提示:
    *********************************************************************************
    SQL> CREATE OR REPLACE  PROCEDURE "SYSTEM"."ITEMS_EDIT" (_no in number,_name in varchar2,_sum in number,_tickettype in varchar2,_memo in varchar2,ActionFlag out number)
      2  as
      3  begin
      4  update Items
      5  set ITEMNO:=_no,NAME:=_name,ITEMSUM:=_sum,TICKETTYPE:=_tickettype,MEMO:=_memo;
      6  set ActionFlag:=0;
      7  end Items_Edit;
      8  /警告: 创建的过程带有编译错误。SQL> show error
    没有错误。
    *********************************************************************************
    各位大哥帮忙分析一下。到底是什么地方出错?
      

  10.   

    不好意思,应该用show errors
    另外,是不是set ActionFlag:=0;
    应该为ActionFlag:=0;
      

  11.   

    show errors procedure system.items_edit;可以看到错误
      

  12.   

    set ITEMNO:=_no,NAME:=_name,ITEMSUM:=_sum,TICKETTYPE:=_tickettype,MEMO:=_memo;
    应该为:set ITEMNO=no,name=name,itemsum=sum1,tickettype=tickettype,memo=memo;
      

  13.   

    在存储过程里只有给变量赋值时才使用冒号":",比如:
    create procedure pro_name 
    declare
    v_1 varchar2(10);
    begin  v_1:='a';
    dbms_output.put_line('v_1的值等于:'||v_1);
     end;
      

  14.   

    补充:
      在update语句中、在控制语句中等都不需要加冒号‘:’!
      

  15.   

    to darkhorsedba(老牛) (
    谢谢.再试一下。
    我的本意,是要修改原来的数据,实际上就是给原字段赋值。
      

  16.   

    还是一样的错误。我本来的意思,是在update的时候,用入口参数的值替换原字段的值。
    其语法格式应该是什么?
    ITEMNO:=_no ? ITEMNO=_no ?
    还是其他?
    谢谢!
      

  17.   

    谢谢,问题解决..oracle中的变量命名不支持下划线开头。:(
    我居然忘记了这一点..多谢楼上的各位。