在oracle SQL*Plus中直接输入存储过程,如下:SQL> CREATE OR REPLACE PROCEDURE proc_helloworld
  2  
  3  IS
  4  
  5  BEGIN
  6  
  7       DBMS_OUTPUT.put_line ('Hello World!');
  8  
  9  END;
 10  
 11  
 12  --提交事务
 13  
 14  COMMIT;
 15  
  SQL> exec proc_helloworld;
BEGIN proc_helloworld; END;      *
第 1 行出现错误:
ORA-06550: 第 1 行, 第 7 列:
PLS-00201: 必须说明标识符 'PROC_HELLOWORLD'
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
SQL> 请问大家,oracle存储过程是这样写的吗?怎样导入oracle中的SQL Plus中的?是怎么执行的?以及在oracle中的SQL Plus中打印hello word?谢谢

解决方案 »

  1.   

    SQL> CREATE OR REPLACE PROCEDURE pro_hellworld
      2  is
      3  begin
      4    dbms_output.put_line('hello');
      5  end;
      6  /过程已创建。SQL> commit;提交完成。SQL> exec pro_hellworld;
    helloPL/SQL 过程已成功完成。SQL> 以上没有发现错误
      

  2.   

    commit;替换为/commit;后依然提示你输入下一行,它被作为过程的一部分(虽然你已经书写了end;)。
    因此你的过程并未创建,使用/执行过程创建DDL。
      

  3.   


    SQL> CREATE OR REPLACE PROCEDURE pro_hellworld
      2  
      3  IS
      4  
      5  BEGIN
      6  
      7       DBMS_OUTPUT.put_line ('Hello World!');
      8  
      9  END;
     10  
     11  
     12  /过程已创建。SQL> commit;提交完成。SQL> exec pro_hellworld;PL/SQL 过程已成功完成。SQL> 
    存储过程已经创建了,但是这个hello,没有在控制台打印啊?请问,这是为什么?
      

  4.   

    CREATE OR REPLACE PROCEDURE proc_helloworld 
      
       IS 
       
       BEGIN 
        
            DBMS_OUTPUT.put_line ('Hello World!'); 
        
       END;
    /
      

  5.   

    SQL> CREATE OR REPLACE PROCEDURE PRO_HELLWORLD IS
      2  BEGIN
      3    DBMS_OUTPUT.PUT_LINE('hello');
      4  END;
      5  /
     
    Procedure created
     
    SQL> set serveroutput on;
    SQL> exec pro_hellworld;
     
    hello
     
    PL/SQL procedure successfully completed
     
    SQL> 
      

  6.   

    CREATE OR REPLACE PROCEDURE pro_hellworld   
    IS 
    BEGIN
     DBMS_OUTPUT.put_line ('Hello World!');   
    END; call pro_hellworld();
      

  7.   

    存储过程是一种存储在数据库中的程序(就像正规语言里的子程序一样);一个存储过程包括名字,参数列表,以及可以包括很多SQL语句的SQL语句集。 
    在这里对局部变量,异常处理,循环控制和IF条件句有新的语法定义。 
    下面是一个包括存储过程的实例声明
    : 
    (译注:为了方便阅读,此后的程序不添任何中文注释) 
     
    CREATE PROCEDURE procedure1           /* name 存储过程名*/  
    (IN parameter1 INTEGER)               /* parameters 参数*/  
    */  
    BEGIN                                 /* start of block 语句块头
      DECLARE variable1 CHAR(10);           /* variables变量声明 */    
      IF parameter1 = 17 THEN               /* start of IF IF条件开始*/  
        SET variable1 = 'birds';                /* assignment 赋
    值*/  
      ELSE  
        SET variable1 = 'beasts';               /* assignment 赋值*/  
      END IF;                                 /* end of IF IF结束*/  
      INSERT INTO table1 VALUES (variable1);/* statement SQL语句*/  
    END                                   /* end of block 语句块结束*/  
    /使用/执行过程创建DDL