0

テーブル trkdriver と trkmechanic の両方に L# が存在するかどうかを確認しようとしています。

L# を取り込む手順を作成しましたが、問題は、trkdriver と trkmechanic の両方に L# が存在することを確認する方法です。

execute v_emp(10001);

PLSQLコード:

CREATE OR REPLACE procedure v_emp
(emp_license IN trkdriver.L#%TYPE) 
IS
result VARCHAR2(10);

BEGIN
select e# INTO result
from trkdriver where l#=emp_license;

DBMS_OUTPUT.PUT_LINE('RESULT' || result);
END;
/

SQL> trkdriver から E# を選択します。

        E#
----------
         1
         3
         5
         7
         9
        11
        13

7 行が選択されました。

以下を試して、2つのテーブルに存在するかどうかを確認しました。

SQL> select E# from trkdriver where EXISTS (select * from trkmechanic where trkd
river.L# = trkmechanic.L#);

それは私に0行のリターンを与えます..

SQL> desc trkdriver;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------

 E#                                        NOT NULL NUMBER(12)
 L#                                        NOT NULL NUMBER(8)
 STATUS                                    NOT NULL VARCHAR2(10)

SQL> desc trkmechanic;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------

 E#                                        NOT NULL NUMBER(12)
 L#                                        NOT NULL NUMBER(8)
 STATUS                                    NOT NULL VARCHAR2(10)
 EXPERIENCE                                NOT NULL VARCHAR2(10)
4

2 に答える 2

0
BEGIN
  EXISTS 
    (SELECT A.L# 
       from trkdriver AS A 
          INNER JOIN
          trkmechanic AS B
          ON A.L#=B.L#
          WHERE A.L# = emp_license
    )
END    
于 2012-11-25T19:50:26.297 に答える
0

このクエリを試してください:

select td.e# INTO result
from trkdriver td
join trkmechanic tm on tm.L#= td.L#
where rd.l#=emp_license;
于 2012-11-25T19:24:36.263 に答える