0
I have This Oracle 12c Procedure

CREATE OR REPLACE PROCEDURE LOGINCHECK(SQLQRY IN CLOB)
AS
    C INTEGER;
    N INTEGER;
    RC SYS_REFCURSOR;
  stmt clob:= To_Clob('begin ' || sqlqry || '; end;');
BEGIN
    C := SYS.DBMS_SQL.OPEN_CURSOR;
    SYS.DBMS_SQL.PARSE(C,stmt ,DBMS_SQL.native);
    N := SYS.DBMS_SQL.EXECUTE(C);
    SYS.DBMS_SQL.GET_NEXT_RESULT(C,RC);
    SYS.DBMS_SQL.RETURN_RESULT(RC);
EXCEPTION
WHEN NO_DATA_FOUND THEN
    NULL;
when OTHERS then
    RAISE;
END LOGINCHECK;

この手順を匿名ブロックで呼び出します (ここから XML データをダウンロード:リンク)

declare stmt clob := 'INWARDPKG.MACHINEINWARD_VALIDATING(XMLDOC => XMLTYPE.CREATEXML(paste xml from link))'; --The parameter value is a xml you can download it from above link
begin
LOGINCHECK(SQLQRY => STMT);
end;

しかし、エラー PLS-00172: 文字列リテラルが長すぎます。

xml のサイズを 40 ~ 50 の要素に減らすと、いくつかの要素を削除するようになります。これはうまくいきます。

4

1 に答える 1