如何使用带参数的视图进行连接?

编程语言 2026-07-12

我有一个参数化视图:

CREATE OR REPLACE VIEW "q_UFTrans"
(
    IN  TableName     NVARCHAR(30),
    IN  LangInt       int
)

AS

    SELECT T0."FldValue", T3."Trans", T0."Descr"
    FROM      "UFD1" T0
    LEFT JOIN "CUFD" T1 ON (T0."FieldID" = T1."FieldID" AND T0."TableID" = T1."TableID")
    LEFT JOIN "OMLT" T2 ON T2."TableName" = 'UFD1'
    LEFT JOIN "MLT1" T3 ON T2."TranEntry" = T3."TranEntry" AND T3."LangCode" = :LangInt
    WHERE T0."TableID"  = :TableName;

它可以工作,如果执行 "q_UFTrans"('OCTG',9),就会返回一个表。然而,如果我在以下代码中尝试对其进行连接:

SELECT T0."DocEntry", T0."GroupNum", T1."U_ShowPayment", T2."Trans" from "OINV" T0
LEFT JOIN "OCTG" T1 ON T1."GroupNum" = T0."GroupNum"
LEFT JOIN "q_UFTrans"('OCTG',9) T2 ON T2."FldValue" = T1."U_ShowPayment" 
where T0."DocEntry" = '18057';

我得到的错误:

SAP DBTech JDBC: [7]: 不支持的特性:带未使用参数的参数化视图:q_UFTrans

这是怎么回事?我该如何和参数化视图进行连接?

解决方案

HANA不支持在JOIN中向参数化视图传递字面常量,请将其放入一个公共表表达式(CTE)中:

WITH uf AS (
    SELECT "FldValue", "Trans", "Descr"
    FROM "q_UFTrans"('OCTG', 'ShowPayment', 9)
)
SELECT T0."DocEntry", T0."GroupNum", T1."U_ShowPayment", T2."Trans"
FROM "OINV" T0
LEFT JOIN "OCTG" T1 ON T1."GroupNum" = T0."GroupNum"
LEFT JOIN uf T2 ON T2."FldValue" = T1."U_ShowPayment"
WHERE T0."DocEntry" = '18057';
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章