2016-06-21 8 views
0

考えると二つのテーブルスクリプトの変数

USERS 
UID NAME 
1 KEN 

ADRESS 
AID UID CITY 
1 1 LONDON 

。これは私がU_ID変数を割り当てることができませんでした、動作しません

select UID into u_id from USERS where NAME='KEN'; 
select * from USERS where UID = u_id; 
select * from ADRESS where UID = u_id; 

出力はもちろん

UID NAME 
1 KEN 

AID UID CITY 
1 1 LONDON 

答えて

1

あるべきSQL Developerでこれを実行するには、少なくとも2つの方法があります。 。バインド変数で

column U_ID new_value sub_u_id; 
set verify off 

select U_ID from USERS where U_NAME='KEN'; 

select * from USERS where U_ID = &sub_u_id; 
select * from ADRESS where U_ID = &sub_u_id; 

この場合にはあなたが単純化する可能性があると::

column U_ID new_value sub_u_id; 
set verify off 

select * from USERS where U_NAME='KEN'; 
select * from ADRESS where U_ID = &sub_u_id; 

variable commandについてもっと読む

variable u_id number 

execute select U_ID into :u_id from USERS where U_NAME='KEN'; 

select * from USERS where U_ID = :u_id; 
select * from ADRESS where U_ID = :u_id; 

または置換変数と

execute commandcolumn command、それはですおよび substitution variablesをSQL * Plusのドキュメントに記載しています。その多くはSQL Developerにも適用されます。キー/予約語を避けるために、わずかに異なる列名で作成されたテーブルと

デモ:スクリプトとして

create table USERS (U_ID number, U_NAME varchar2(10)); 
insert into users values (1, 'KEN'); 
create table ADRESS(A_ID number, U_ID number, CITY varchar2(10)); 
insert into adress values (1, 1, 'LONDON'); 

prompt Demo 1: bind variables 

var u_id number 
exec select U_ID into :u_id from USERS where U_NAME='KEN'; 
select * from USERS where U_ID = :u_id; 
select * from ADRESS where U_ID = :u_id; 

prompt Demo 2: substitution variables 

column U_ID new_value sub_u_id; 
set verify off 
select * from USERS where U_NAME='KEN'; 
select * from ADRESS where U_ID = &sub_u_id; 

ファイル名を指定して実行、スクリプト出力ウィンドウが表示さ:

Table USERS created. 

1 row inserted. 

Table ADRESS created. 

1 row inserted. 

Demo 1: bind variables 

PL/SQL procedure successfully completed. 

     U_ID U_NAME 
---------- ---------- 
     1 KEN  


     A_ID  U_ID CITY  
---------- ---------- ---------- 
     1   1 LONDON  

Demo 2: substitution variables 

     U_ID U_NAME 
---------- ---------- 
     1 KEN  

     A_ID  U_ID CITY  
---------- ---------- ---------- 
     1   1 LONDON  

あなたは抑えることができますもちろんset feedback offのメッセージPL/SQL procedure successfully completed

+0

アレックス、あなたの素晴らしい答えに感謝します。バインド変数の例は、私には完璧に機能します。 NEW_VALUE動詞はOracle SQL Developer SQLワークシート・エディタでエラーとしてマークされますが、スクリプトは引き続き機能します。 – weberjn

+0

はい、構文が少し変わっています。おそらくSDフォーラムで彼らが実際に報告されているかどうかを確認する必要があります* 8) –

関連する問題