2016-11-15 2 views
1

У меня есть простой запрос, который я могу запустить в жабе.Как использовать переменные в выражении select в Oracle PL-SQL

select * from my_table 
where my_id = 11111; 

Почему я не могу запустить тот же запрос из жабы на этот раз, объявив переменную и используя ее в предложении where?

В SQL Server я:

declare @testID int 
set @testID = 11111 
select * from my_table 
    where my_id = @testID; 

Как я могу сделать то же самое в Oracle 11g?

+2

зависит от ..если вы делаете это для тестирования, и вы хотите захватить значение во время выполнения, вы можете просто «выбрать» из my_table , где my_id = & testID; 'ampersand обозначает переменную, требующую ввода пользователя при выполнении. Будьте осторожны с этим в Oracle, как если бы у вас было такое имя, как Mike & Jon's Paint и тело, оно может попросить вас определить переменную Jon! (это можно отключить: см. [здесь] (http://stackoverflow.com/questions/18735499/how-to-escape-ampersand-in-toad)) – xQbert

+0

По аналогичному вопросу, уже заданный ранее. Проверьте [здесь] (http://stackoverflow.com/questions/7163996/how-to-select-into-a-variable-in-pl-sql-when-the-result-might-be-null) – Hema

ответ

0

PLSQL отличается от SQL SERVER. Он имеет свой собственный синтаксис. Посмотрите, как вы можете сделать это, как показано ниже:

DECLARE 
    var NUMBER := 1; 
    var2 my_table%ROWTYPE; 
BEGIN 
    SELECT * 
    INTO var2 
    FROM my_table 
    WHERE my_id = var; 

    --To display result you need to add dbsm_output.put_line function. 

    dbms_output.put_line(var2.<columnname>); 

Exception 
When others then 
Null;  
END; 

Примечание: Предположение о том, что запрос Виль возвращать только одну строку.

+0

ОК, похоже, работает, но я не вижу никаких результатов. – PrivateJoker

+0

Чтобы увидеть, вам сначала нужно отобразить его с помощью функции dbms_output.put_line. – XING

+0

Я до сих пор не вижу результатов. (Мой выход включен в жабу) Объявление Номер p_jobID (6): = 111111; p_row JOBS% rowtype; начать выберите * в p_row из my_table где ID = p_jobID; Dbms_Output.put_line (: p_row); конец; – PrivateJoker

2

В жаба (или SQL Developer), вы можете сделать это:

select * from my_table 
where my_id = :testID; 

Когда вы запустите его, вам будет предложено ввести значение для переменной связывания TestID.

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