Sha*_*mar 1 oracle plsql cross-apply
以下查询给出了缺少的关键字错误..
select *
from its_account aac
CROSS APPLY its.fnGetAccountIdentifier(aac.account_key) ;
Run Code Online (Sandbox Code Playgroud)
这是我的功能:
create or replace FUNCTION fnGetAccountIdentifier
(
v_AccountKey IN NUMBER
)
RETURN fnGetAccountIdentifier_pkg.tt_fnGetAccountIdentifier_type PIPELINED
AS
v_temp SYS_REFCURSOR;
v_temp_1 TT_FNGETACCOUNTIDENTIFIER%ROWTYPE;
BEGIN
OPEN v_temp FOR
SELECT *
FROM tt_fnGetAccountIdentifier;
LOOP
FETCH v_temp INTO v_temp_1;
EXIT WHEN v_temp%NOTFOUND;
PIPE ROW ( v_temp_1 );
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)
我不知道我在哪里做错了.我真的很陌生.
在APPLYSQL语法,它是否CROSS APPLY还是OUTER APPLY在被引入
Oracle 12c版本.Oracle RDBMS的早期版本不支持APPLYSQL语法.
TABLE()功能:话虽如此,您可以按如下方式重写查询:
适用于12c使用cross apply.
select *
from its_account aac
cross apply TABLE(fnGetAccountIdentifier(aac.account_key)) ;
Run Code Online (Sandbox Code Playgroud)
对于9i及以上使用cross join.
select *
from its_account aac
cross join TABLE(fnGetAccountIdentifier(aac.account_key)) ;
Run Code Online (Sandbox Code Playgroud)
在您的情况下没有区别 - 您将使用cross join您使用的相同结果cross apply.