【问题标题】:Insert Mulitple rows in a OUT parameter in a User-defined Table type HANA在用户定义的表类型 HANA 的 OUT 参数中插入多行
【发布时间】:2016-01-06 09:01:17
【问题描述】:

我被困在一个地方。

有一个过程可以检查某些内容并在成功确定该条件后插入表类型。

但我只能在表格类型中插入一次。有没有办法一次又一次地插入到表类型中。

    PROCEDURE "hello"."helloWorld.db::sampleException" (OUT TRACE_RECORD "hello"."LogTrace" )
    LANGUAGE SQLSCRIPT AS
BEGIN

DECLARE i int;

select count(*) into i from "hello"."REGION";
IF :i > 1 then 
TRACE_RECORD = SELECT '1' AS "LogID", '1' AS "TraceID" FROM DUMMY;
 end if;
IF :i > 2 then 
TRACE_RECORD = SELECT '2' AS "LogID", '2' AS "TraceID" FROM DUMMY;
end if;

END;

我在执行过程中得到的只是最后一条记录“2,2”。

如何插入记录 1,1 和 2,2。

注意:我不想使用临时表。

对此有任何帮助..

谢谢!

稍微修改一下问题:

-我必须使用Table TYPE(直到没有比它更好的最佳方式)

-我要在表类型中插入20-30多条记录。

【问题讨论】:

    标签: sql stored-procedures sap procedure hana


    【解决方案1】:

    你必须把它写成一个过程吗?表值函数似乎更合适:

    CREATE FUNCTION f_tables4 (in_id INTEGER)
    RETURNS TABLE (
        "LogID" VARCHAR(400),
        "TraceID" VARCHAR(400)
    )
    LANGUAGE SQLSCRIPT
    AS
    BEGIN
        RETURN 
        SELECT t."LogID", t."TraceID"
        FROM (
            SELECT 1 AS i, '1' AS "LogID", '1' AS "TraceID" FROM DUMMY
            UNION ALL
            SELECT 2 AS i, '2' AS "LogID", '2' AS "TraceID" FROM DUMMY
        ) t
        JOIN (SELECT count(*) AS cnt FROM "hello"."REGION") c
        ON c.cnt > t.i
    END
    

    【讨论】:

    • 如果我在整个过程中有多个条件怎么办。以上只是一个例子。我认为这不会达到目的。 @卢卡斯
    • @abhi5800:我不太了解HANA的功能。在 Oracle 中,您将编写一个 PIPELINED 函数。在 SQL Server 中,您将使用内存表并在其中插入记录。但是您可以仅使用 SQL 取得相当大的进展。我将保持原样,因为对于手头的问题,我认为这是一个合理的答案。如果您想更新您的问题,详细说明为什么这对您不起作用,我可能会调整答案
    • 谢谢@Lukar。!该解决方案适用于小数据(作为我的问题)。但我一直在寻找更优化的解决方案,因为我必须在 Table 类型中插入许多行。
    • @abhi5800:它也适用于 30 条记录——目前我不太确定问题出在哪里。风格? SQL 不是一件坏事,你知道 :-) 当然不一定比任何等效的程序解决方案更糟糕。如果您可以重新表述您的问题以非常清楚地说明为什么此解决方案不适合您(除了风格问题),那么我会重新考虑,但就目前而言,这似乎是您的最佳选择。
    • 谢谢卢卡斯!截至目前,它适用于 20 多条记录。可能会采用相同的解决方案。 HANA ;)
    猜你喜欢
    • 1970-01-01
    • 2016-05-13
    • 2022-11-17
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 2018-12-15
    相关资源
    最近更新 更多