PL/SQL中的联接表

PL/SQL中的联接表,sql,oracle,join,plsql,Sql,Oracle,Join,Plsql,您好,我想问一下,当我运行此代码时,我遇到了一个错误,我是否知道如何修复它,我想在输入患者id时了解该患者的医生,谢谢。下面是我的代码 DECLARE patientid(3) := &pt_id; dname doc_name%type; BEGIN SELECT doc_name INTO dname FROM doctor JOIN patient ON doctor.doc_id = patient.doc_id W

您好,我想问一下,当我运行此代码时,我遇到了一个错误,我是否知道如何修复它,我想在输入患者id时了解该患者的医生,谢谢。下面是我的代码

DECLARE
  patientid(3)  := &pt_id;
  dname     doc_name%type;
BEGIN
  SELECT doc_name
    INTO dname
    FROM doctor
    JOIN patient
      ON doctor.doc_id = patient.doc_id
   WHERE pt_id = patientid;

  DBMS_OUTPUT.PUT_LINE('He/She is the patient of Dr.' || dname);
END;
患者(3)应该是什么?数据类型丢失

但是,考虑一下这样的事情:

SQL> set serveroutput on
SQL> declare
  2    -- No         : patientid(3):=&pt_id;
  3    -- Better     : patientid varchar2(3) := &pt_id;  -- is it VARCHAR2? or NUMBER? Who knows ...
  4    -- Even better:
  5    l_pt_id   patient.pt_id%type := &par_pt_id;
  6    l_dname   doctor.doc_name%type;
  7  begin
  8    select d.doc_name
  9      into l_dname
 10      from doctor d join patient p on d.doc_id = p.doc_id
 11     where p.pt_id = l_pt_id;
 12
 13    dbms_output.put_line ('He/She is the patient of Dr. '|| l_dname);
 14  end;
 15  /
Enter value for par_pt_id: 100
He/She is the patient of Dr. Luffy

PL/SQL procedure successfully completed.

SQL>
患者(3)应该是什么?数据类型丢失

但是,考虑一下这样的事情:

SQL> set serveroutput on
SQL> declare
  2    -- No         : patientid(3):=&pt_id;
  3    -- Better     : patientid varchar2(3) := &pt_id;  -- is it VARCHAR2? or NUMBER? Who knows ...
  4    -- Even better:
  5    l_pt_id   patient.pt_id%type := &par_pt_id;
  6    l_dname   doctor.doc_name%type;
  7  begin
  8    select d.doc_name
  9      into l_dname
 10      from doctor d join patient p on d.doc_id = p.doc_id
 11     where p.pt_id = l_pt_id;
 12
 13    dbms_output.put_line ('He/She is the patient of Dr. '|| l_dname);
 14  end;
 15  /
Enter value for par_pt_id: 100
He/She is the patient of Dr. Luffy

PL/SQL procedure successfully completed.

SQL>

我得到了错误什么是错误?请提供。此外,当您遵循所述术语的最小部分时,您将很容易获得解决问题所需的所有信息RA-06550:第3行第10列:PLS-00103:遇到符号“(”当需要以下任一项时:常量异常表列长双参考字符时间戳间隔日期二进制国家字符nchar符号“”被替换为“”(“继续。ORA-06550:第9行,第18列:PLS-00103:遇到符号“患者”当需要下列选项之一时:,;对于具有intersect减去顺序开始并集的组,其中connect 06550.00000-“行%s,列%s:\n%s”*原因:通常是PL/SQL编译错误。*措施:请通过发布原始问题中的错误。您是否仔细阅读了第3行?错误确实在其中。我得到错误是什么?请提供。此外,当您遵循所述术语的最小部分时,您将很容易获得解决问题所需的所有信息ssueORA-06550:第3行第10列:PLS-00103:遇到符号“(”当需要下列之一时:常量异常表列长双参考字符时间戳间隔日期二进制国家字符nchar,符号“”被替换为“(”若要继续。ORA-06550:第9行第18列:PLS-00103:在预期以下情况之一时遇到符号“PATIENT”:;对于具有intersect减去order start union的组,其中连接06550.00000—“第%s行,第%s列:\n%s”*原因:通常是PL/SQL编译错误。*操作:请通过发布原始问题中的错误。您是否仔细阅读了第3行?错误确实在其中。我知道了,感谢帮助,mate,所以我的数据类型丢失了。非常感谢mate我知道了,感谢帮助,mate,所以我的数据类型丢失了.非常感谢你,伙计