--该为存储过程
CREATE OR REPLACE PROCEDURE addUser(
       p_id Users.Id%type,
       p_name users.uname%type,
       p_pwd users.pwd%type
)AS
BEGIN
     insert into Users(id,uname,pwd) values(p_id,p_name,p_pwd);
     commit;
END addUser;执行语句
EXEC addUser('0002','zhangsan','zhang01');补充:在数据库中表存在,用insert可以插入值,用执行语句就会报无效的sql语句
这是为什么呢?请高手帮忙指导一下。2.oracle中的dbms_outln.put_line(V_NAME);为什么不能用?

解决方案 »

  1.   

     CREATE OR REPLACE PROCEDURE addUser(
      2    p_id Users.Id%type,
      3    p_name users.uname%type,
      4    p_pwd users.pwd%type
      5  )AS
      6  BEGIN
      7    insert into Users(id,uname,pwd) values(p_id,p_name,p_pwd);
      8    commit;
      9  END addUser;
     10  
     11  
     12  /
     
    Procedure created
     
    SQL> exec addUser('01','abc','abc');
     
    PL/SQL procedure successfully completed
     
    SQL> select * from users;
     
    ID         UNAME                PWD
    ---------- -------------------- --------------------
    01         abc                  abc没问题啊
      

  2.   

    2.oracle中的dbms_outln.put_line(V_NAME);为什么不能用
    楼主set serveroutput on;没?
      

  3.   

    scott@SZTYORA>
    scott@SZTYORA> CREATE TABLE Users(
      2  id VARCHAR2(20),
      3  uname VARCHAR2(40),
      4  pwd VARCHAR2(40)
      5  );表已创建。scott@SZTYORA>
    scott@SZTYORA> CREATE OR REPLACE PROCEDURE addUser(
      2    p_id Users.Id%type,
      3    p_name users.uname%type,
      4    p_pwd users.pwd%type
      5  )AS
      6  BEGIN
      7    insert into Users(id,uname,pwd) values(p_id,p_name,p_pwd);
      8    commit;
      9  END addUser;
     10  /过程已创建。scott@SZTYORA> EXEC addUser('0002','zhangsan','zhang01');PL/SQL 过程已成功完成。scott@SZTYORA>
      

  4.   

    -- 我测试了没问题!你看一下你的ID字段是不是字符串类型的!
    CREATE TABLE Users(
    id VARCHAR2(20),
    uname VARCHAR2(40),
    pwd VARCHAR2(40)
    );--该为存储过程
    CREATE OR REPLACE PROCEDURE addUser(
      p_id Users.Id%type,
      p_name users.uname%type,
      p_pwd users.pwd%type
    )AS
    BEGIN
      insert into Users(id,uname,pwd) values(p_id,p_name,p_pwd);
      commit;
    END addUser;
    /执行语句
    EXEC addUser('0002','zhangsan','zhang01');
      

  5.   

    楼主是否是在pl sql developer的sql窗口执行
    exec xxx需要在命令行中使用
      

  6.   


    什么是set serveroutput on?怎么用的
      

  7.   


    语法没问题 就看你的插入的记录跟你的表的列的字段类型是否一致
    2.oracle中的dbms_outln.put_line(V_NAME);为什么不能用?
    在运行前 输入
    set serveroutput on --显示输出结果
      

  8.   

     在命令窗口执行(pl/sql 中的command窗口 或sqlplus中)  显示输出结果的   pl/sql 中的command窗口 或sqlplus中