输入数字和输出varchar2的过程

时间:2013-12-16 01:28:50

标签: oracle stored-procedures plsql procedure

我需要编写一个输入过程,让我们说一个rep_id,然后输出与rep_id对应的rep_name。

之后,我需要使用另一个程序来调用上述过程。

这是第一个程序的内容。

create or replace procedure p_inout
(v_rep_id in number)
As
v_first_name varchar2(20);
v_last_name varchar2(20);
begin
select first_name,last_name into v_first_name, v_last_name
from rep
where rep_id = v_rep_id;
dbms_output.put_line(v_first_name||' '||v_last_name);
end p_inout;
/

Execute p_inout(100);

这是我调用上述程序的程序

create or replace procedure p_call
is
v_first_name varchar2(20);
v_last_name varchar2(20);
begin
p_inout(100);
dbms_output.put_line(v_first_name||' '||v_last_name);
end p_call;
/
execute p_call

我能得到结果,但有一个人告诉我,我的通话程序应该是这样的

Create or replace procedure p_call
Is
V_name varchar2(20);
Begin
P_inout(100,v_name); --100 is a rep id
Dbms_output.Put_line(v_name);
End;
/
Execute p_call

我的程序和他的通话程序是否产生相同的结果?

1 个答案:

答案 0 :(得分:0)

CREATE TABLE minions (
  rep_id    DATE   CONSTRAINT minions__rep_id__pk PRIMARY KEY,
  rep_name  NUMBER CONSTRAINT minions__rep_name__nn NOT NULL
                   CONSTRAINT minions__rep_name__u UNIQUE
)
/

CREATE OR REPLACE PROCEDURE myCatWasSick (
  p_rep_id   IN  minions.rep_id%TYPE,
  p_rep_name OUT minions.rep_name%TYPE
)
IS
BEGIN
  SELECT rep_name
  INTO   p_rep_name
  FROM   minions
  WHERE  rep_id = p_rep_id;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    p_rep_name := NULL;
END myCatWasSick;
/

CREATE OR REPLACE PROCEDURE releaseTheBadgers
IS
  the_badger NUMBER(10);
BEGIN
  myCatWasSick( SYSDATE + 1, the_badger );
  // Do something with the_badger.
END releaseTheBadgers;
/