How to use execute immediate with variable table name and condition

前端 未结 2 493
天命终不由人
天命终不由人 2020-12-22 04:48

I want to create a PL/SQL function which is passed a table name and a condition, and which returns the number of rows than the condition meets on that table.

I creat

2条回答
  •  孤城傲影
    2020-12-22 05:30

    As illustrated above perfectly by Alex just to add make the exception handling generic as NO_DATA_FOUND will not be raised when we are doing COUNT(*).

    CREATE OR REPLACE FUNCTION CHECK_EXISTS(
        TABLE_NAME VARCHAR2,
        CONDITION  VARCHAR2)
      RETURN NUMBER
    AS
      VAL      NUMBER;
      SQL_CODE VARCHAR2(2000 CHAR):= 'SELECT COUNT (*) FROM '||TABLE_NAME||' WHERE '|| CONDITION;
    BEGIN
      EXECUTE IMMEDIATE SQL_CODE INTO val;
      RETURN VAL;
    EXCEPTION
    WHEN OTHERS THEN --no data found may not get raised as we are doing count(*) here
      RETURN 0;
    END;
    

提交回复
热议问题