所以我试图在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经验丰富的程序员!
答案 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;