Как передать функциональность всплывающего окна в код в Oracle SQL для объявления переменных? - PullRequest
1 голос
/ 26 марта 2020

Я готовлю Oracle SQL программу для моей команды. Это может в конечном счете использоваться другими командами, изменяя несколько условий. Мы все используем Toad для Oracle, чтобы выполнить запрос. Поэтому я добавил переменные в запрос. См. Пример кода ниже.

DECLARE  v_lob    VARCHAR(2);BEGIN  v_lob := 't' ;END;
select :v_lob  as Test from dual

Моя проблема в том, что у Toad есть опция всплывающего окна для привязки переменной. Поскольку моя команда использует v_lob: = 't' любым способом, я предпочитаю, чтобы они не вводили его каждый раз при запросе. Как удалить параметр всплывающего окна и использовать значение 't' для переменной, как в коде?

1 Ответ

0 голосов
/ 27 марта 2020

Возможно, вы захотите использовать CONTEXT для хранения большого количества переменных сеанса. Это решение должно работать с любой IDE.

Один пользователь должен один раз создать контекст и создать пакет для установки значений контекста (на основе этой статьи oracle на основе ) :

--Create a package on a shared schema.
create or replace package context_api is
    procedure set_parameter(p_name varchar2, p_value varchar2);
end;
/

create or replace package body context_api is
    procedure set_parameter(p_name varchar2, p_value varchar2) is
    begin
        dbms_session.set_context('my_context', p_name, p_value);
    end;
end;
/


--Create a context on a shared database.
--(Note that contexts are global objects and don't belong to a specific schema.)
create or replace context my_context using context_api;

Каждый пользователь затем нуждается в таком коде в своих таблицах:

--At the top of the worksheet, set the variables like this:
begin
    context_api.set_parameter('v_lob', 'asdf');
end;
/


--Call the variables with SYS_CONTEXT:
select sys_context('my_context', 'v_lob') as test from dual;

TEST
----
asdf
...