Новичок Oracle Переменная Вопрос - PullRequest
0 голосов
/ 02 июня 2009

У меня есть простой оператор SQL, который отлично работает в SQL Server:

DECLARE @ID VARCHAR(10)
SET @ID = '12345'

SELECT *
FROM theTable 
WHERE ID = @ID

Может, кто-нибудь подскажет, как сделать эту чрезвычайно простую вещь в Oracle?

Ответы [ 4 ]

2 голосов
/ 02 июня 2009

Вы можете сделать нечто подобное, используя интерфейс SQL * Plus (sqlplus из командной строки):

variable asdf number;
exec :asdf := 10;
select :asdf from dual;

С уважением K

1 голос
/ 02 июня 2009

Если ваша цель - установить переменные в верхней части скрипта, возможно, это ваше решение?

with IDS as (
    select 1234 from dual
    union all
    select 1235 from dual
)

select * from TABLE where TABLE.ID in (select * from IDS)
1 голос
/ 02 июня 2009

В SQL * Plus это почти то же самое:

SQL> create table thetable (id) as select '01234' from dual union all select '12345' from dual
  2  /

Table created.

SQL> var id varchar2(10)
SQL> exec :id := '12345'

PL/SQL procedure successfully completed.

SQL> select *
  2  from theTable
  3  where id = :id
  4  /

ID
-----
12345

1 row selected.

или в PL / SQL:

SQL> declare
  2    l_id varchar2(10) := '12345';
  3    r thetable%rowtype;
  4  begin
  5    select *
  6      into r
  7      from thetable
  8     where id = l_id
  9    ;
 10    dbms_output.put_line(r.id);
 11  end;
 12  /
12345

PL/SQL procedure successfully completed.

С уважением, Роб.

0 голосов
/ 02 июня 2009

К сожалению, простого пути не существует.

Вы должны объявить это в блоке (я думаю, что это может быть хранимая процедура или, по крайней мере, в блоке). Однако это только часть проблемы. Как только он окажется в блоке, результаты больше не будут «выплескиваться» в окно консоли. Таким образом, вы должны использовать курсор, скопировать информацию о строке в массив, а затем пройтись по массиву, печатая значения, используя DMBS_OUTPUT.

Достаточно легко вернуть вас к MSSQL.

(примечание Марка Харрисона). Этот ответ неверен ... см. Другие ответы для оракулярной версии вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...