I want to use the cursor to get the count(data) in all tables under the schema I need.
But I am unfamiliar with SQL, and I still cannot pass the following code:
CREATE OR REPLACE FUNCTION check_tool.get_nae(v_dbName character varying)
 RETURNS numeric
 LANGUAGE edbspl
 SECURITY DEFINER
AS $function$
    numInsert numeric;
    numCal numeric;
    v_result numeric;
    query TEXT DEFAULT '';
    cursor c_pj is 
        select t.table_schema::text as tableSchema,
            t.table_name::text as tableName
        from information_schema.tables t
        where t.table_catalog = v_dbName
        and t.table_type = 'BASE TABLE'
        and t.table_schema in (select schema_name from check_tool.img_schema where dbName = v_dbName);
BEGIN
    v_result := -1;
    numInsert := 0;
    for r_pj in c_pj loop
        query := 'select count(*) from '||tableSchema||'.'||tableName||';';     -- select count(*) from "item"."project";
        execute query into numCal;
        insert into check_tool.img_result(schema_name,table_name,num) values (r_pj.tableSchema,r_pj.tableName,numCal);
        numInsert := numInsert + 1;
        if numInsert > 1000 then
            numInsert := 0;
            commit;
        end if;
    end loop;
    commit;
    v_result := 0;
    RETURN v_result;
EXCEPTION
    WHEN others THEN
        RETURN v_result;
END get_nae$function$
;
/
I also tried concat() and quote_ident(), but the result is not ideal.
 
    