如何刷新HANA中的所有虚拟表?

问题描述

我创建了一个带有游标的存储过程,用于遍历系统中的每个虚拟表。

@client.command()
async def poll(ctx,*,message):
    message = await ctx.send(message)
    await message.add_reaction(u"\U0001F44D")

当前的问题是,CREATE OR REPLACE PROCEDURE "Basis.db::sp_basis_alter_vt_2"( ) AS OBJECT_NAME nvarchar(500); BEGIN DECLARE OBJECT_ELEMENT_NAME nvarchar(500); DECLARE CURSOR v_Cursor FOR SELECT CONCAT(OBJECT_NAME,'"') AS OBJECT_NAME FROM( SELECT CONCAT(OBJECT_NAME,TABLE_NAME) AS OBJECT_NAME FROM( SELECT CONCAT(OBJECT_NAME,'"."') AS OBJECT_NAME,TABLE_NAME FROM ( SELECT CONCAT('"',SCHEMA_NAME) AS OBJECT_NAME,TABLE_NAME FROM "PUBLIC"."TABLES" WHERE TABLE_NAME LIKE 'VT_%'))); OPEN v_Cursor; FETCH v_Cursor into OBJECT_ELEMENT_NAME; FOR cur_row AS v_CURSOR DO ALTER VIRTUAL TABLE cur_row.OBJECT_NAME REFRESH DEFinitioN; END FOR; CLOSE v_Cursor; END; 不能识别为表条目,而可以识别为架构名称

如何刷新HANA Cloud中的所有虚拟表?

错误输出是:

cur_row.OBJECT_NAME

解决方法

似乎这个解决方案对我来说可行。 谢谢拉斯,谢谢您的修改!

CREATE OR REPLACE PROCEDURE "Basis.db::sp_basis_alter_vt_2"( )
   AS
   OBJECT_NAME nvarchar(517);
  
BEGIN
    DECLARE CURSOR virt_tables FOR 
        SELECT 
              '"' || SCHEMA_NAME || '"."' || TABLE_NAME || '"' AS OBJECT_NAME
        FROM 
              "PUBLIC"."TABLES" 
        WHERE 
              TABLE_NAME LIKE 'VT_%';
    
    FOR vtab AS virt_tables DO
        EXECUTE IMMEDIATE 'ALTER VIRTUAL TABLE ' || vtab.OBJECT_NAME || ' REFRESH DEFINITION';
    END FOR;
    
END;