sql - 如何创建pl sql函数以检查数据库中是否存在数据

标签 sql database function plsql compiler-errors

我正在尝试创建一个函数来告知数据库中是否存在数据。如果存在数据,则尝试使用游标解决此问题,然后将从数据库中获取数据,并且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/

相关文章:

mysql - MySQL 中何时使用单引号、双引号和反引号

sql - 查询引擎将如何评估此 SQL 查询?

java - 使用 JOOQ 替换 MySQL 表中的字符串

数据库触发器/参照完整性和内存缓存

javascript - 有没有一种方法可以在一个函数定义中提供两组剩余参数?

c# - 如何增加表达到的数量?

php - 使用 SQL 查询填充 D3.js 饼图

ruby-on-rails - 在性别选择中使用 Rails 的 Tinyint 和 select 标签

php - 将函数分配给类的属性

c - C语言中如何调用函数