首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查某列在PL/SQL函数中是否有特定条目

检查某列在PL/SQL函数中是否有特定条目
EN

Stack Overflow用户
提问于 2011-02-09 11:48:00
回答 2查看 3.1K关注 0票数 2

我有一张两列的桌子。第二列是外键列。我希望在本专栏中检查是否有外键X的记录。我在Oracle 11g上使用(而不是学习) PL/SQL。

编辑:我可以在*中使用SQL SELECT,但是如何在PL/SQL中使用它来返回函数中的布尔值呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-09 11:58:04

代码语言:javascript
复制
FUNCTION my_func ()
RETURN BOOLEAN
IS
  l_contains_x NUMBER;
  l_contains_x_bool BOOLEAN := false;
BEGIN
  SELECT 1
  INTO l_contains_x
  FROM dual
  WHERE EXISTS (
    SELECT 1
    FROM table
    WHERE col = X
  );

  IF l_contains_x = 1 THEN 
    l_contains_x_bool := TRUE;
  END IF;

  RETURN l_contains_x_bool;

END;

注意,这里的键是INTO关键字,它将值返回到变量中。它们在位置上匹配,因此您可以将4列选择到4个变量(或*为行类型)。这需要一个值,这就是为什么我已经将检查移到一个存在中,所以您的外部选择只选择一个值。

请注意,SQL没有布尔类型的概念,因此您的函数只能在PL/SQL上下文中使用。如果希望在SQL上下文中返回true / false,则应该使用VARCHAR2 'true‘和'false’。

票数 3
EN

Stack Overflow用户

发布于 2011-02-14 13:54:35

代码语言:javascript
复制
create or replace function hasFK(i_key in someTable.fk%type) return number as
  v_cnt pls_integer := 0;
begin
  select count(1) 
  into v_cnt
  from someTable
  where fk = i_key
  and rownum = 1;

  return v_cnt;
end;

这将给1=true和0=false。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4944447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档