SQL查找输入是否为无效输入的过程

时间:2016-05-24 07:23:26

标签: sql procedure

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所以任何建议/阅读都会非常感激。

1 个答案:

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