ORACLE sql использует переменные для запроса

мне нужно создать переменные для моего запроса

у меня есть запрос на внутреннее соединение Es

select * from ...
inner join
 etc ..
where username = 'jack'
and value 1 = 'work'

Я хотел бы создать переменные сверху для легкого изменения значения в условии.

Я использовал Declare и set, но покажите мне ошибку PLS-00103 для группы, имеющей пересечение минус порядок начала объединения, где соединение

как я могу сделать для создания переменных? Большое спасибо за помощь, извините за мой английский не мой первый язык.


person nowaySync    schedule 23.07.2015    source источник
comment
Вы работаете с использованием хранимой процедуры для вызова этого выбора?   -  person Ashish Patil    schedule 23.07.2015
comment
нет простого выбора с внутренним соединением   -  person nowaySync    schedule 23.07.2015


Ответы (2)


Вы можете использовать блок Anonymus PL/SQL для вашего вышеуказанного вопроса. Но если вы используете блок select внутри, вы должны использовать вместе с ним предложение INTO.

E.g.--

CREATE TABLE T1 (AA VARCHAR2(20));

insert into t1 values('YYY');
commit;  -- table created with sample value.

Теперь используйте блок Anonymus pl-sql для вызова select -

DECLARE
USERNAME VARCHAR2(20);
VALUE1 VARCHAR(20);

BEGIN
USERNAME:='YYY';

SELECT aa into  VALUE1 FROM T1 WHERE AA=USERNAME;

dbms_output.put_line(VALUE1);

end;

Теперь, в вашем случае, поскольку вы используете select *, вы можете использовать атрибут ROWTYPE для выбора строки из таблицы. Проверьте ROWTYPE пример здесь. http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/fundamentals.htm#BEIBGEFH

person Ashish Patil    schedule 23.07.2015

Вы должны вставлять операторы между begin и end.

Declare varchar2(30) vUserName := 'jack';
Declare ...
Begin
    select * from ...
    inner join
    etc ..
    where username = vUserName
          and value 1 = vValue1
End
person Adrian Stanculescu    schedule 23.07.2015
comment
У вас есть дополнительный Declare; удалите это, как это не нужно. - person Boneist; 23.07.2015
comment
Сообщить об ошибке -ORA-06550: Обнаружен символ ( .... находится в конце varchar2 - person nowaySync; 23.07.2015
comment
ах, имя переменной должно стоять перед типом данных. Таким образом, 1_ - person Boneist; 23.07.2015