как объявить переменные в Oracle 9i
пересмотрел много литературы, но видно мало, раз не нашёл.
заранее спасибо!
[highlight=sql]DECLARE VARIABLE varname vartype[/highlight]
В пакете переменные объявляются в секции declare, в процедуре - после заголовка. Если вам надо в простом запросе объявить процедуру код такой:
variable_a typename;
begin
текст_запроса
end;
А насчет литературы - быть того не может. Это есть везде, хоть у Тома Кэйта, хоть в First Steps.
за литературу спасибо - скачал, почитаю.
пробывал такое
- но оно не работает, поэтому и обратился за помощью на форуме. выдаёт:
11:58:12 PL/SQL: SQL Statement ignored
нужна переменная глобальная, чтоб можно было использовать во временных таблицах к примеру
with table_1 as (запрос, в к-м используется переменные),
with table_2 as (запрос, в к-м используется переменные)
select *
from table_1,table_2
where
-- и тут использовать переменную к примеру
-- и т.д.
пробывал такое
- но оно не работает, поэтому и обратился за помощью на форуме. выдаёт:
11:58:12 PL/SQL: SQL Statement ignored
Вот совершенно небывает так. Только что вбил девятке
variable1 number;
begin
select 1 into variable1 from dual;
dbms_output(varibale1);
end;
так он не только не ругался, а еше и на вывод радостно напечатал единичку.
А насчет глобальных переменных - это конечно здорово, но лично я бы Вам посоветовал не заниматься объявлением глобальных переменных, а уж если сильно надо - использовать механизмы переменных окружения oracle. У Тома кстати все это описано, и даже обосновано.
и на все мои дествия обычно ответ такой:
[1]: Statement: SQL*Plus command ignored.
либо
[1]: PL/SQL: SQL Statement ignored
А что же тогда оно поддерживает??? Бред какой то. Вообще то pl\sql и практически весь SQL*Plus там поддерживается. Писал в нем раньше, и весь вышеприведенный код там работает. Слез только по причине тормозов. В конце концов, а что мешает потестить ваш код из другой среды? Из той же консоли sqlplus?
variable1 number;
begin
select count(a.id) into variable1 from sr_bank.sr$account a;
--dbms_output(varibale1);
end;
но не пойму как мне поместить в переменную значение и работать с этой переменной потом.
мне бы объявить переменную или константу, а потом использовать её. всё что нужно.
но видимо моего понимания и знаний мне не хватает.
variable1 number;
begin
varable1:=19817;
--работаешь с ней
end;
variable1 number;
begin
select count(a.id) into variable1 from sr_bank.sr$account a;
--dbms_output(varibale1);
end;
Да, жжошь!)
В этой одной строчке 2 ошибки: во-первых, dbms_output.put_line, а во-вторых, "variable1", а не "varibale1".
В этой одной строчке 2 ошибки: во-первых, dbms_output.put_line, а во-вторых, "variable1", а не "varibale1".
ошибся когда постил на форуме. а вообще верно было написано в навигаторе.
по теме.
first_day DATE;
last_day DATE;
BEGIN
first_day := to_date('01.04.2010','dd.mm.yyyy');
last_day := to_date('10.04.2010','dd.mm.yyyy');
END;
вот так вроде работает. как мне тогда использовать переменные first_day, last_day в простом запросе типа такого.
1. Использовать контекст Оракла (уже говорилось).
2. Сохранять значение не в переменной, а в таблице (например, во временной).
3. Привести описание задачи, зачем это вообще надо.
1. Использовать контекст Оракла (уже говорилось).
2. Сохранять значение не в переменной, а в таблице (например, во временной).
3. Привести описание задачи, зачем это вообще надо.
да всё довольно банально. по роду деятельности приходится часто писать скрипты для получения данных. часто потом приходится менять в скиптах даты и др., поэтому когда скрипт большой уже приходится часто CTRL+H и заменять часть скрипта., переменные очень бы упростили задачу, да и надо как-то расти - объявление переменных, констант - это то что нужно уже сейчас.
select unique(a.open_date) date1
from sr_bank.SR$account a
where a.open_date = TO_DATE('10.04.2009','dd.mm.yyyy')
)
select * from sr_bank.SR$account a
where
a.open_date in (select table1.date1 from table1)
вот так работает, но, согласитесь, так писать скрипт тупо. потому хотелось бы объявить переменную Date1 или константу Date1 и использовать её потом.
В них создавать поля с необходимыми значениями, потому что по другому не работает. либо ограничение какое стоит, либо руки кривые у меня, как только не пробывал. не работают ваши советы. но всё равно всем спасибо за подсказки! зы всем +