我有一张两列的桌子。第二列是外键列。我希望在本专栏中检查是否有外键X的记录。我在Oracle 11g上使用(而不是学习) PL/SQL。
编辑:我可以在*中使用SQL SELECT,但是如何在PL/SQL中使用它来返回函数中的布尔值呢?
发布于 2011-02-09 11:58:04
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’。
发布于 2011-02-14 13:54:35
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。
https://stackoverflow.com/questions/4944447
复制相似问题