如何刷新HANA中的所有虚拟表?
How to refresh all virtual tables in HANA?
我创建了一个带有游标的存储过程,用于遍历系统中的每个虚拟 table。
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;
目前的问题是,cur_row.OBJECT_NAME
未被识别为 table 条目,而是模式名称。
如何刷新 HANA Cloud 中的所有虚拟表?
错误输出为:
Could not execute 'CREATE OR REPLACE PROCEDURE "Basis.db::sp_basis_alter_vt_2"( ) AS OBJECT_NAME ...'
Error: (dberror) [257]: sql syntax error: incorrect syntax near "REFRESH": line 15 col 42 (at pos 640)
这个解决方案似乎对我有用。
谢谢 Lars,感谢您的修改!
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;
我创建了一个带有游标的存储过程,用于遍历系统中的每个虚拟 table。
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;
目前的问题是,cur_row.OBJECT_NAME
未被识别为 table 条目,而是模式名称。
如何刷新 HANA Cloud 中的所有虚拟表?
错误输出为:
Could not execute 'CREATE OR REPLACE PROCEDURE "Basis.db::sp_basis_alter_vt_2"( ) AS OBJECT_NAME ...'
Error: (dberror) [257]: sql syntax error: incorrect syntax near "REFRESH": line 15 col 42 (at pos 640)
这个解决方案似乎对我有用。 谢谢 Lars,感谢您的修改!
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;