CREATE OR REPLACE
PROCEDURE CONDITIONPROCEDURE(INPUT CONDITION CCONDITION.CONDITION%TYPE )
as
C.NAME%TYPE
CC.CONDITION%TYPE
BEGIN
SELECT NAME, CONDITION
INTO C_NAME, CC_CONDITION
FROM CLIENT, CCONDITION
WHERE CC_CONDITION = 'acrophobia'
DMBS_OUTPUT.PUT_LINE('CLIENT HAS ACROPHOBIA OR HEART CONDITION)
到目前为止,我的代码看起来像这样,但我不确定这是否正在回答我的问题;
问题是“编写一个存储过程,显示没有任何心脏病或者恐高症的客户的联系方式。”
表引用显示为
CLIENT (ClientNo, Name, Sex, DOB, Address, Phone, Email, Occupation,
MaritalStatus, Spouse, Anniversary)
CCONDITION (ClientNo, Condition)
我只是学习SQL所以任何建议/阅读都会非常感激。
答案 0 :(得分:0)
首先,您需要正确的查询,以选择没有“恐高症”的客户。或者“心脏病”'检测。 NOT EXISTS(相关子查询)是正确的工具
SELECT NAME, CONDITION
FROM CLIENT c
WHERE NOT EXISTS (
SELECT 1
FROM CCONDITION cond
WHERE cond.ClientNo = c.ClientNo
AND cond.CC_CONDITION IN ( 'acrophobia', 'heart condition'))
下一步是将此查询包装到特定于DBMS的过程中,并且DBMS还有许多选项可以返回proc。例如,您可能希望返回refcursor,或者在Oracle中创建Pipelined Table Function。