SAP HANA:有没有办法将架构和 table 名称定义为过程的输入参数?

SAP HANA: Is there a way to define schema and table name as input parameters of a procedure?

我正在创建一个程序来删除 table 行重复项。

代码工作正常,我想将代码转换为过程。我找不到将 [Schema][Table] 设置为输入参数的方法。

Create procedure DUPL_DELETE (in inp1 nvarchar(100), in inp2 nvarchar(200))
as 
begin

-- Select the distinct rows into a New temporary Table
create local temporary table #Mytemp
LIKE "SCHEMA"."TABLE";
-- LIKE :inp2.:inp1        Desired code to be(does not work)
SELECT DISTINCT * 
FROM "SCHEMA"."TABLE"
INTO "SCHEMA".#Mytemp;

-- Delete the rows from table
DELETE FROM "SCHEMA"."TABLE";

-- Insert disctinct data back in to the Table and drop the temporary table
INSERT INTO "SCHEMA"."TABLE" SELECT * FROM "SCHEMA".#Mytemp;
DROP TABLE "SCHEMA".#Mytemp;

end;

请大家帮忙

您可以尝试使用以下示例命令更改模式:

set schema OTHERSCHEMA;

但对于 table 名称,您需要构建并 run dynamic SQL statement 使用

execute immediate :sql;

你可以这样做:

CREATE PROCEDURE OriginalSchema.procDynamicSchema( 
     IN schemaId NVARCHAR(250)
     )
     LANGUAGE SQLSCRIPT 
     SQL SECURITY INVOKER 
     READS SQL DATA AS

BEGIN
/***************************** 
  Write your procedure logic 
*****************************/
 EXECUTE IMMEDIATE 
 'SELECT  
    "Id",
    "UUID",
    "IdpId",
    "Email",
    "firstName",
    "lastname"
FROM ' || :schemaId || '."Users"' ;  
END;

然后调用它:

CALL "OriginalSchema"."procDynamicSchema"(SCHEMAID => 'XYZ')

p.s:我不认为您可以动态传递 OriginalSchema 名称,因为要创建一个过程,您必须至少有一个模式,您实际上试图在第一个地方创建您的过程