2016-11-15 30 views
1

私はtoadで実行できる簡単なクエリがあります。Oracle PL-SQLのselect文で変数を使用する方法

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; 'アンパサンドは実行時にユーザ入力を必要とする変数を示します。あなたはMike&Jonのペイントやボディのような名前を持っているかのように、Oracleでこれを慎重にしてください。 (これは無効にすることができます:[here](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; 

注:仮定は、クエリは、単一の行を返すウィルということです。あなたがこれを行うことができヒキガエル(またはSQL開発者)で

+0

それはうまくいくようですが、結果は表示されません。 – PrivateJoker

+0

まず、dbms_output.put_line関数を使用して表示する必要があります。 – XING

+0

私はまだ結果が表示されません。 (私の出力はヒキガエルで有効になります) 宣言 p_jobID number(6):= 111111; p_row JOBS%rowtype; がMY_TABLE ID = p_jobIDからp_row に選択* を開始します。 Dbms_Output.put_line(:p_row); end; – PrivateJoker

2

select * from my_table 
where my_id = :testID; 

あなたがそれを実行すると、あなたはテストIDのバインド変数の値を入力するように求められます。

関連する問題