2012-05-10 4 views
0

я работал ранее с SQL Server и смог научиться создавать временные переменные и использовать их в SQLДекларирование временной переменной в базе данных Oracle

я использовал, чтобы написать что-то вроде этого:

declare @Student nvarchar(255) 

select @Student = studentname from sometable where somecondition = 1 

declare @teacher nvarchar(255) 

select @teacher = teachername from sometable2 where somecondition >2 

, а затем

select @student, @teacher, other columns from sometable where some condition 

я хочу сделать то же самое в базе данных ORACLE.

Пожалуйста, помогите!

+0

sqlplus имеет переменные, использующие ключевое слово «define» и «&» в качестве замены (см. Http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch5.htm#sthref1020) – tbone

ответ

0

Вы можете объявить переменную сказать

SOME_VAR VARCHAR2(255); 

Затем использовать его в запросе непосредственно

SELECT DISTINCT YT.TEACHER_NAME 
    INTO SOME_VAR 
    FROM YOUR_TABLE YT 
WHERE YT.TEACHER_ID = 1; 

Затем вы можете использовать эту переменную, SOME_VAR, для дальнейшего использования

Из Конечно, это не будет работать в простой инструкции SQL, но если вы используете его в блоке программирования, как процедура.

Надеется, что это помогает

1

Если вы хотите сделать это в SQL * Plus без использования PL/SQL, вы можете использовать substitution variables:

column studentname new_value l_studentname 
select studentname from sometable where somecondition = 1; 

column teachername new_value l_teachername 
select teachername from sometable2 where somecondition >2; 

select '&l_studentname', '&l_teachername,' other columns 
from sometable where somecondition; 

new_value clause в column директивы автоматически присваивает значение из любой последующий выбор для локальной переменной, которую я добавил с l_, но вы можете позвонить что угодно. Затем вы ссылаетесь на эту локальную переменную в будущих запросах с синтаксисом замены подстановки &.

Вы можете использовать их почти везде, где бы вы ни находились. например в предложении where. Обратите внимание, что текстовые значения должны быть заключены в кавычки, поэтому '&l_studentname'; без котировок значение будет интерпретироваться как имя столбца в этом случае, что не сработает.

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