PL/SQL 中的连接表
Posted
技术标签:
【中文标题】PL/SQL 中的连接表【英文标题】:Join table in PL/SQL 【发布时间】:2021-05-23 14:06:04 【问题描述】:您好,我想问一下我在运行此代码时遇到错误,我能知道如何解决它吗?我想在输入患者 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;
【问题讨论】:
我得到错误 什么是错误?请提供minimal reproducible example。此外,当您遵循所描述术语的最小部分时,您将轻松获得解决问题所需的所有信息 ORA-06550:第 3 行,第 10 列:PLS-00103:在预期以下情况之一时遇到符号“(”:常量异常 表列 long double ref char 时间时间戳间隔日期二进制国家字符 nchar 符号“”被替换为“(”以继续。 ORA-06550:第 9 行,第 18 列:PLS-00103:在预期以下情况之一时遇到符号“患者”:, ;对于有相交减去顺序开始联合的组,连接 06550。00000 - “行 %s,列 %s:\n%s” *原因:通常是 PL/SQL 编译错误。 *行动: 请通过edit 发布您原始问题中的错误。您是否仔细阅读了第 3 行?错误确实在其中。 【参考方案1】:patient(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>
【讨论】:
我知道了,感谢您的帮助,所以我的数据类型丢失了。非常感谢你的队友以上是关于PL/SQL 中的连接表的主要内容,如果未能解决你的问题,请参考以下文章
使用 pl/sql 中的 xmlelement 获取所有关系表数据
pl/sql连接oracle数据库tables里面不显示表。