Вопрос

У меня есть сценарий SQL, который выполняется в жаб. В настоящее время я выложил это только с утверждением за утверждением, таким образом:

select such-and-such from somewhere;

delete other-thing from somewhere-else;

И так далее. Некоторые из положений, где положения в конечном итоге оказываются повторяющимися, потому что у меня есть сложные внутренние запросы, чтобы получить определенные идентификаторы для работы. Я хотел бы запечатлеть идентификатор в начале сценария в переменной, а затем использовать эту переменную в последующем месте, где положения. Так что -то вроде этого:

variable MY_ID = select the-ID from somewhere;

select such-and-such from somewhere where ID = @MY_ID;

Очевидно, я составляю этот синтаксис, но это то, что я ищу. Но я не уверен, возможно ли это в сценарии жабы. Я знаю, что могу преобразовать все это в блок PL/SQL, но я стараюсь избегать этого по разным причинам.

Любой способ сделать это с помощью Toad без преобразования в блок PL/SQL?

Это было полезно?

Решение

Я думаю, что это достигнет того, что вы хотите. Вы можете объявить переменную привязки, вставить в нее значение, а затем использовать ее в будущих операторах.

variable l_var varchar2(1);

begin
  select dummy
    into :l_var
    from dual;
end;

select *
  from dual
 where dummy = :l_var;

Другие советы

Я использую переменные замены SQL*Plus. Они поддерживаются Жадой. Вы можете выполнить этот код, нажав F5.

COLUMN VAR NEW_VALUE VAR_VALUE

SELECT 'SOMETHING' VAR FROM DUAL;  --this sets 'VAR_VALUE' = 'SOMETHING'

SELECT '&VAR_VALUE' FROM DUAL;  --this uses the value set by the previous stmt.

Я больше не использую жабу, но должен быть некоторый механизм для настройки значений для параметров связывания, т.е. select such-and-such from somewhere where ID = :myid; так, что каждый раз, когда это происходит, жаба дает одно и то же значение для этого параметра.

В качестве альтернативы, вы можете создать значение контекста сеанса или переменную пакета PL/SQL (примечание: не то же самое, что переписывание всего вашего кода для использования PL/SQL). Видеть этот вопрос

Функция «Рассчитанные поля» в жаб на самом деле довольно мощная, если использовать правильным образом. Это не что иное, как редактор сценария «токена», который прикрепляется к самому запросу. Он доступен только через редактор дизайна запросов, а не от нативного редактора, который позволяет писать прямо в SQL.

В качестве подсказка, в следующий раз, когда вы создадите запрос, разработанный в жаб, и необходимо создать комплекс, где или подраздел, попробуйте функцию «Рассчитанные поля» и используйте опцию Forms, чтобы в основном прикрепить ваши условия к данному столбцу или запросу. Вы будете удивлены, насколько он мощный. И это помогает сохранить ваш SQL -запрос в хорошем читаемом формате.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top