Как вы вызываете процедуру и получаете ее переменные в pl/sql
Поэтому я пытаюсь создать игру в блэкджек в plsql, я планирую использовать 2 процедуры, которые дадут мне такие значения, как king of spade, 2 of hearts и т. д. Основная часть - это проблема, при которой я создаю петли и тому подобное. НЕ МОГУ ЗВОНИТЬ ПРОЦЕДУРУ.
Я попытался вызвать его, и sqlplus выдает мне сообщение о том, что 'имя_процесса' не является процедурой или не определено, что полностью bs.., потому что я создал его, и он находится в схеме, поэтому я должен иметь возможность использовать его, вероятно, это просто я я называю это неправильно или что-то.
также, если я хочу, чтобы значения переменных в процедуре, такие как x=1, и я хотел, чтобы значение x было в моем главном драйвере, как я это называю? какие-либо изменения в процедуре и как я могу получить его от основного?
это мой главный
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;
заранее спасибо умные люди ака опытные программисты!
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;