2015-07-23 2 views
0

мне нужно создать переменные для моего запросаORACLE Использование SQL переменных для запроса

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

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

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

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

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

+0

Вы работаете, используя Хранимую процедуру для вызова этого выбора? –

+0

нет простого выбора с внутренним соединением – nowaySync

ответ

0

Вы должны вставлять утверждения между началом и концом.

Declare varchar2(30) vUserName := 'jack'; 
Declare ... 
Begin 
    select * from ... 
    inner join 
    etc .. 
    where username = vUserName 
      and value 1 = vValue1 
End 
+0

У вас есть дополнительная декларация; удалите это, поскольку это необязательно. – Boneist

+0

Сообщить об ошибке -ORA-06550: Обнаружен символ "(" .... находится на конце varchar2 – nowaySync

+0

ah, имя переменной должно идти до типа данных, поэтому: 'vusername varchar2 (30): = 'jack' ; ' – Boneist

1

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

Eg--

CREATE TABLE T1 (AA VARCHAR2(20)); 

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

Теперь используйте Анонимус PL-SQL блок для вызова выберите -

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

Смежные вопросы