Вы запрашиваете вывод в зависимости от переменной, но какая переменная должна использоваться, зависит от (других) данных. Это может быть выполнено в PL / SQL с помощью так называемого «динамика c» PL / SQL, как показано ниже. Обратите внимание, что Dynami c PL / SQL не на начальном уровне - это расширенный топи c.
DECLARE
TABLE_0 VARCHAR2(10) DEFAULT 'LOSE';
TABLE_1 VARCHAR2(10) DEFAULT 'WIN' ;
X NUMBER;
GUESS VARCHAR2(1000); -- or CLOB for more generality
BEGIN
X := 1;
GUESS := ' DECLARE
TABLE_0 VARCHAR2(10) := :TABLE_0;
TABLE_1 VARCHAR2(10) := :TABLE_1;
BEGIN
DBMS_OUTPUT.PUT_LINE(TABLE_' || X || ');
END;';
EXECUTE IMMEDIATE GUESS USING TABLE_0, TABLE_1;
END;
/
Когда я запускаю этот код, я получаю следующий ответ (убедившись, что Сначала я устанавливаю serveroutput, чтобы видеть выходные данные из PUT_LINE):
WIN
PL/SQL procedure successfully completed.
Обратите внимание, что X
может быть аргументом для хранимой процедуры, ее не нужно жестко кодировать, как у вас это здесь. То же самое относится к TABLE_0
и TABLE_1
.