我正在尝试创建一个函数来告知数据库中是否存在数据。如果存在数据,则尝试使用游标解决此问题,然后将从数据库中获取数据,并且temp的值将为TRUE
,否则将不会从DB中获取数据,并将temp的值设置为false
。
但是当我编译此函数时,它发出警告
Warning: Function created with compilation errors.
CREATE OR REPLACE FUNCTION CHECK_DATA(Eid IN varchar2(5))
RETURN boolean
IS
cursor cemp is select EMPNO from employee where EMPNO = Eid ;
eno employee.EMPNO%TYPE ;
temp number;
BEGIN
open cemp ;
fetch cemp into eno ;
if(cemp%notfound)then
temp := FALSE ;
else
temp := TRUE ;
End if ;
close cemp ;
return temp ;
END;
/
最佳答案
你可以像这样使用游标Reference
DECLARE
CURSOR cCheck (p_Param IN NUMBER) IS
SELECT /*+ FIRST_ROWS */ 99
FROM my_table
WHERE some_column = p_Param
FOR UPDATE;
v_dummy NUMBER;
v_row_exists BOOLEAN;
v_test NUMBER := 1; -- This would actually come from a parameter or somewhere
BEGIN
OPEN cCheck(v_test);
FETCH cCheck INTO v_dummy;
v_row_exists := cCheck%FOUND;
CLOSE cCheck;
IF v_row_Exists THEN
... Do something that can't be done with MERGE
END IF;
CLOSE cCheck;
关于sql - 如何创建pl sql函数以检查数据库中是否存在数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59907116/