你如何调用一个过程并在pl / sql中获取它的变量

时间:2014-05-07 21:13:42

标签: sql plsql plsqldeveloper plsql-psp

所以我试图在plsql中创建一个游戏二十一点,我打算使用2个程序,它会给我一些价值,比如铁锹王,2个心等等。主要部分是我创建循环的问题这样,我不能打电话给你。

我试着打电话给它,sqlplus给了我一个错误说' procedurename'不是一个程序或是未定义的完全是bs ..因为我创建了它并且它在模式中所以我应该能够使用它,它可能只是我称它错了什么。

如果我想要程序中的变量值,例如x = 1,并且我希望x的值在我的主驱动程序中,我该如何调用它?程序的任何变化以及我如何从main获得它?

这是我的主要

    DECLARE
    draw integer;
    face varchar2(10);
    BEGIN
    draw;
    END;

我想调用draw,我希望我的过程中的值为integer和face,这些是

    create or replace procedure draw is

draw integer;
face varchar2(10);

    BEGIN
select dbms_random.value(1,13) into draw from dual;


if draw = 11 then
draw := 10;
face := 'Jack';
dbms_output.put_line(face|| ' of ');


elsif draw = 12 then
draw := 10;
face := 'Queen';
dbms_output.put_line(face|| ' of ');


elsif draw = 13 then
draw := 10;
face := 'King';
dbms_output.put_line(face|| ' of ');

elsif draw = 1 then
face := 'Ace';
dbms_output.put_line(face|| ' of ');

else
dbms_output.put_line(draw|| ' of ');

end if;
    END;

提前感谢聪明的人们a.k.a经验丰富的程序员!

1 个答案:

答案 0 :(得分:1)

新手,

假设您需要在主程序中返回值,则以下内容应该有效。您需要将参数声明为out,以便它们在调用过程中可用。

DECLARE
    draw integer;
    face varchar2(10);
BEGIN
   drawCard( draw, face);
   dbms_output.put_line('In main Proc ' || face|| ' of ');
END;

create or replace procedure drawCard (draw in out integer, face in out varchar2) is

BEGIN
  select dbms_random.value(1,13) into draw from dual;


  if draw = 11 then
    draw := 10;
    face := 'Jack';
    dbms_output.put_line(face|| ' of ');


  elsif draw = 12 then
    draw := 10;
    face := 'Queen';
    dbms_output.put_line(face|| ' of ');

  elsif draw = 13 then
    draw := 10;
    face := 'King';
    dbms_output.put_line(face|| ' of ');

  elsif draw = 1 then
    face := 'Ace';
    dbms_output.put_line(face|| ' of ');

  else
    dbms_output.put_line(draw|| ' of ');

  end if;
END;