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 行。

我在下面尝试检查它是否存在于两个表上:

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 回答