create or raplace procdure proc1 
(id in number,name in nvarchar2,result out number)
 is
begin
insert into student values(id,name);
end;谁帮我写一个,运行这个存储过程的pl/sql语句。
比如:
begin
decalre count number;
proc1(1,zhang,3);
end;像这个样子的。我不大会啊。

解决方案 »

  1.   

    var dd number
    exec pd_test_proc1 _user(1,'小王',:dd);
      

  2.   

    -- 不会可以理解,怕的就是你自己都不知道你自己在干什么?-- 首先请问:你上面的存储过程的输出参数 result 你都没给它赋值,这样有意义么?
      

  3.   

    方法一: call proc1(1,'小王');方法二: exec proc1(1,'小王');
      

  4.   


    --存储过程增加异常判断和事务控制
    CREATE OR REPLACE PROCEDURE PROC1  --replace你写错了,procedure 也写错了
    (i_ID     IN NUMBER,        --在定义参数的同时一定注意区分建议写成这种形式
     i_NAME   IN NVARCHAR2,
     o_RESULT OUT NUMBER) IS    --这里的out参数在存储过程中必须给他赋值,否则存储过程编译出错。
    BEGIN
      INSERT INTO STUDENT VALUES (i_ID, i_NAME);
      o_RESULT := 0;            --这里增加返回值
      COMMIT;                   --这里增加事务控制
    EXCEPTION
      WHEN OTHERS THEN          --这里是异常处理
        ROLLBACK;
        o_RESULT := 1;
    END;--调用
    DECLARE
      V_ID     NUMBER := 1;
      V_NAME   NVARCHAR2(100) := 'zhang';
      V_RESULT NUMBER;
    BEGIN
      PROC1(V_ID, V_NAME, V_RESULT);
    END;--或者
    DECLARE
      V_RESULT NUMBER;
    BEGIN
      PROC1(1, 'zhang', V_RESULT);
    END;
      

  5.   


    这个中的那个事务commit是固定的吗?还是你自己定义的?
      

  6.   

    1、事务这个东西一定是要有的。
    2、你不能将一个事务一直挂在那里。
    3、但是加与不加就看你的业务逻辑了,如果这个程序是一个子程序,那就不加,如果是个主程序那就加上。
       根据你的具体情况判断。典型的理解如银行转帐 A向B转100元
     A账户减少100元, B账户增加100元, 这是两个步骤,但是是一个事务,中间一个环节出错要全部rollback
     若A账户减少100元后commit,B账户增加100元失败,那么A账户减少的100元不能被回滚了就。
      

  7.   

    嗯,我的是主程序,必须有。
    我是想知道,这个commit我可以直接用吗?还是我要自己定义(我自己写)一个?
    另外:我想知道,怎么测试我的oracle语句是否出错了,就像程序中的断点之类的……,有没有?
      

  8.   

    我是想知道,这个commit我可以直接用吗?还是我要自己定义(我自己写)一个?
    ===>commit 是数据库关键字,当然可以直接用。
    另外:我想知道,怎么测试我的oracle语句是否出错了,就像程序中的断点之类的……,有没有?
    ===>plsql developer 工具有debug测试功能可以用它测试。