[CP] fix SYS_REFCURSOR's data_type from EXT to REF CURSOR in all_arguments table
This commit is contained in:
		@ -259,7 +259,7 @@ int ObInnerTableSchema::dba_arguments_schema(ObTableSchema &table_schema)
 | 
			
		||||
  table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset()));
 | 
			
		||||
 | 
			
		||||
  if (OB_SUCC(ret)) {
 | 
			
		||||
    if (OB_FAIL(table_schema.set_view_definition(R"__(   SELECT     D.DATABASE_NAME AS OWNER,     R.ROUTINE_NAME AS OBJECT_NAME,     CASE R.ROUTINE_TYPE       WHEN 1 THEN NULL       WHEN 2 THEN NULL       WHEN 3 THEN P.PACKAGE_NAME       WHEN 4 THEN T.TYPE_NAME END AS PACKAGE_NAME,     CASE R.ROUTINE_TYPE       WHEN 1 THEN R.ROUTINE_ID       WHEN 2 THEN R.ROUTINE_ID       WHEN 3 THEN P.PACKAGE_ID       WHEN 4 THEN T.TYPE_ID END AS OBJECT_ID,     CASE R.OVERLOAD WHEN 0 THEN NULL ELSE R.OVERLOAD END AS OVERLOAD,     CASE R.SUBPROGRAM_ID WHEN 0 THEN 1 ELSE R.SUBPROGRAM_ID END AS SUBPROGRAM_ID,     RP.PARAM_NAME AS ARGUMENT_NAME,     RP.PARAM_POSITION AS POSITION,     RP.SEQUENCE AS SEQUENCE,     RP.PARAM_LEVEL AS DATA_LEVEL,     V.DATA_TYPE_STR AS DATA_TYPE,     CAST(CASE WHEN RP.DEFAULT_VALUE IS NULL THEN 'N' ELSE 'Y' END AS VARCHAR(1)) AS DEFAULTED,     RP.PARAM_LENGTH AS DATA_LENGTH,     DECODE(BITAND(RP.FLAG, 3), 1, 'IN', 2, 'OUT', 3, 'INOUT', 0, 'OUT') AS IN_OUT,     RP.PARAM_PRECISION AS DATA_PRECISION,     RP.PARAM_SCALE AS DATA_SCALE,     CASE RP.PARAM_CHARSET WHEN 1 THEN 'BINARY' WHEN 2 THEN 'UTF8MB4' ELSE NULL END AS CHARACTER_SET_NAME,     CASE RP.PARAM_COLL_TYPE WHEN 45 THEN 'UTF8MB4_GENERAL_CI' WHEN 46 THEN 'UTF8MB4_BIN' WHEN 63 THEN 'BINARY' ELSE NULL END AS COLLATION,     RP.TYPE_OWNER AS TYPE_OWNER,     RP.TYPE_NAME AS TYPE_NAME,     RP.TYPE_SUBNAME AS TYPE_SUBNAME,     RP.TENANT_ID AS ORIGIN_CON_ID   FROM     (SELECT * FROM SYS.ALL_VIRTUAL_ROUTINE_PARAM_REAL_AGENT         WHERE TENANT_ID = EFFECTIVE_TENANT_ID()) RP     LEFT JOIN SYS.ALL_VIRTUAL_ROUTINE_REAL_AGENT R ON RP.ROUTINE_ID = R.ROUTINE_ID         AND R.TENANT_ID = EFFECTIVE_TENANT_ID()     LEFT JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT D ON R.DATABASE_ID = D.DATABASE_ID         AND D.TENANT_ID = EFFECTIVE_TENANT_ID()     LEFT JOIN SYS.ALL_VIRTUAL_PACKAGE_REAL_AGENT P ON R.PACKAGE_ID = P.PACKAGE_ID AND R.ROUTINE_TYPE = 3         AND P.TENANT_ID = EFFECTIVE_TENANT_ID()     LEFT JOIN SYS.ALL_VIRTUAL_TYPE_REAL_AGENT T ON R.PACKAGE_ID = T.TYPE_ID AND R.ROUTINE_TYPE = 4       AND T.TENANT_ID = EFFECTIVE_TENANT_ID()     LEFT JOIN SYS.ALL_VIRTUAL_DATA_TYPE V ON RP.PARAM_TYPE = V.DATA_TYPE   WHERE     D.IN_RECYCLEBIN = 0   UNION ALL   SELECT     CAST('SYS' AS VARCHAR2(30)) AS OWNER,     RS.ROUTINE_NAME AS OBJECT_NAME,     CASE RS.ROUTINE_TYPE       WHEN 1 THEN NULL       WHEN 2 THEN NULL       WHEN 3 THEN PS.PACKAGE_NAME       WHEN 4 THEN TS.TYPE_NAME END AS PACKAGE_NAME,     CASE RS.ROUTINE_TYPE       WHEN 1 THEN RS.ROUTINE_ID       WHEN 2 THEN RS.ROUTINE_ID       WHEN 3 THEN PS.PACKAGE_ID       WHEN 4 THEN TS.TYPE_ID END AS OBJECT_ID,     CASE RS.OVERLOAD WHEN 0 THEN NULL ELSE RS.OVERLOAD END AS OVERLOAD,     CASE RS.SUBPROGRAM_ID WHEN 0 THEN 1 ELSE RS.SUBPROGRAM_ID END AS SUBPROGRAM_ID,     RPS.PARAM_NAME AS ARGUMENT_NAME,     RPS.PARAM_POSITION AS POSITION,     RPS.SEQUENCE AS SEQUENCE,     RPS.PARAM_LEVEL AS DATA_LEVEL,     VV.DATA_TYPE_STR AS DATA_TYPE,     CAST(CASE WHEN RPS.DEFAULT_VALUE IS NULL THEN 'N' ELSE 'Y' END AS VARCHAR(1)) AS DEFAULTED,     RPS.PARAM_LENGTH AS DATA_LENGTH,     DECODE(BITAND(RPS.FLAG, 3), 1, 'IN', 2, 'OUT', 3, 'INOUT') AS IN_OUT,     RPS.PARAM_PRECISION AS DATA_PRECISION,     RPS.PARAM_SCALE AS DATA_SCALE,     CASE RPS.PARAM_CHARSET WHEN 1 THEN 'BINARY' WHEN 2 THEN 'UTF8MB4' ELSE NULL END AS CHARACTER_SET_NAME,     CASE RPS.PARAM_COLL_TYPE WHEN 45 THEN 'UTF8MB4_GENERAL_CI' WHEN 46 THEN 'UTF8MB4_BIN' WHEN 63 THEN 'BINARY' ELSE NULL END AS COLLATION,     RPS.TYPE_OWNER AS TYPE_OWNER,     RPS.TYPE_NAME AS TYPE_NAME,     RPS.TYPE_SUBNAME AS TYPE_SUBNAME,     RPS.TENANT_ID AS ORIGIN_CON_ID   FROM     SYS.ALL_VIRTUAL_ROUTINE_PARAM_SYS_AGENT RPS     LEFT JOIN SYS.ALL_VIRTUAL_ROUTINE_SYS_AGENT RS       ON RPS.ROUTINE_ID = RS.ROUTINE_ID AND RS.ROUTINE_TYPE != 1 AND RS.ROUTINE_TYPE != 2     LEFT JOIN SYS.ALL_VIRTUAL_PACKAGE_SYS_AGENT PS       ON RS.PACKAGE_ID = PS.PACKAGE_ID AND RS.ROUTINE_TYPE = 3     LEFT JOIN SYS.ALL_VIRTUAL_TYPE_SYS_AGENT TS       ON RS.PACKAGE_ID = TS.TYPE_ID AND RS.ROUTINE_TYPE = 4     LEFT JOIN SYS.ALL_VIRTUAL_DATA_TYPE VV ON RPS.PARAM_TYPE = VV.DATA_TYPE )__"))) {
 | 
			
		||||
    if (OB_FAIL(table_schema.set_view_definition(R"__(   SELECT     D.DATABASE_NAME AS OWNER,     R.ROUTINE_NAME AS OBJECT_NAME,     CASE R.ROUTINE_TYPE       WHEN 1 THEN NULL       WHEN 2 THEN NULL       WHEN 3 THEN P.PACKAGE_NAME       WHEN 4 THEN T.TYPE_NAME END AS PACKAGE_NAME,     CASE R.ROUTINE_TYPE       WHEN 1 THEN R.ROUTINE_ID       WHEN 2 THEN R.ROUTINE_ID       WHEN 3 THEN P.PACKAGE_ID       WHEN 4 THEN T.TYPE_ID END AS OBJECT_ID,     CASE R.OVERLOAD WHEN 0 THEN NULL ELSE R.OVERLOAD END AS OVERLOAD,     CASE R.SUBPROGRAM_ID WHEN 0 THEN 1 ELSE R.SUBPROGRAM_ID END AS SUBPROGRAM_ID,     RP.PARAM_NAME AS ARGUMENT_NAME,     RP.PARAM_POSITION AS POSITION,     RP.SEQUENCE AS SEQUENCE,     RP.PARAM_LEVEL AS DATA_LEVEL,     CASE RP.TYPE_NAME        WHEN 'SYS_REFCURSOR' THEN 'REF CURSOR'       ELSE V.DATA_TYPE_STR END AS DATA_TYPE,     CAST(CASE WHEN RP.DEFAULT_VALUE IS NULL THEN 'N' ELSE 'Y' END AS VARCHAR(1)) AS DEFAULTED,     RP.PARAM_LENGTH AS DATA_LENGTH,     DECODE(BITAND(RP.FLAG, 3), 1, 'IN', 2, 'OUT', 3, 'INOUT', 0, 'OUT') AS IN_OUT,     RP.PARAM_PRECISION AS DATA_PRECISION,     RP.PARAM_SCALE AS DATA_SCALE,     CASE RP.PARAM_CHARSET WHEN 1 THEN 'BINARY' WHEN 2 THEN 'UTF8MB4' ELSE NULL END AS CHARACTER_SET_NAME,     CASE RP.PARAM_COLL_TYPE WHEN 45 THEN 'UTF8MB4_GENERAL_CI' WHEN 46 THEN 'UTF8MB4_BIN' WHEN 63 THEN 'BINARY' ELSE NULL END AS COLLATION,     RP.TYPE_OWNER AS TYPE_OWNER,     RP.TYPE_NAME AS TYPE_NAME,     RP.TYPE_SUBNAME AS TYPE_SUBNAME,     RP.TENANT_ID AS ORIGIN_CON_ID   FROM     (SELECT * FROM SYS.ALL_VIRTUAL_ROUTINE_PARAM_REAL_AGENT         WHERE TENANT_ID = EFFECTIVE_TENANT_ID()) RP     LEFT JOIN SYS.ALL_VIRTUAL_ROUTINE_REAL_AGENT R ON RP.ROUTINE_ID = R.ROUTINE_ID         AND R.TENANT_ID = EFFECTIVE_TENANT_ID()     LEFT JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT D ON R.DATABASE_ID = D.DATABASE_ID         AND D.TENANT_ID = EFFECTIVE_TENANT_ID()     LEFT JOIN SYS.ALL_VIRTUAL_PACKAGE_REAL_AGENT P ON R.PACKAGE_ID = P.PACKAGE_ID AND R.ROUTINE_TYPE = 3         AND P.TENANT_ID = EFFECTIVE_TENANT_ID()     LEFT JOIN SYS.ALL_VIRTUAL_TYPE_REAL_AGENT T ON R.PACKAGE_ID = T.TYPE_ID AND R.ROUTINE_TYPE = 4       AND T.TENANT_ID = EFFECTIVE_TENANT_ID()     LEFT JOIN SYS.ALL_VIRTUAL_DATA_TYPE V ON RP.PARAM_TYPE = V.DATA_TYPE   WHERE     D.IN_RECYCLEBIN = 0   UNION ALL   SELECT     CAST('SYS' AS VARCHAR2(30)) AS OWNER,     RS.ROUTINE_NAME AS OBJECT_NAME,     CASE RS.ROUTINE_TYPE       WHEN 1 THEN NULL       WHEN 2 THEN NULL       WHEN 3 THEN PS.PACKAGE_NAME       WHEN 4 THEN TS.TYPE_NAME END AS PACKAGE_NAME,     CASE RS.ROUTINE_TYPE       WHEN 1 THEN RS.ROUTINE_ID       WHEN 2 THEN RS.ROUTINE_ID       WHEN 3 THEN PS.PACKAGE_ID       WHEN 4 THEN TS.TYPE_ID END AS OBJECT_ID,     CASE RS.OVERLOAD WHEN 0 THEN NULL ELSE RS.OVERLOAD END AS OVERLOAD,     CASE RS.SUBPROGRAM_ID WHEN 0 THEN 1 ELSE RS.SUBPROGRAM_ID END AS SUBPROGRAM_ID,     RPS.PARAM_NAME AS ARGUMENT_NAME,     RPS.PARAM_POSITION AS POSITION,     RPS.SEQUENCE AS SEQUENCE,     RPS.PARAM_LEVEL AS DATA_LEVEL,     CASE RPS.TYPE_NAME        WHEN 'SYS_REFCURSOR' THEN 'REF CURSOR'       ELSE VV.DATA_TYPE_STR END AS DATA_TYPE,     CAST(CASE WHEN RPS.DEFAULT_VALUE IS NULL THEN 'N' ELSE 'Y' END AS VARCHAR(1)) AS DEFAULTED,     RPS.PARAM_LENGTH AS DATA_LENGTH,     DECODE(BITAND(RPS.FLAG, 3), 1, 'IN', 2, 'OUT', 3, 'INOUT') AS IN_OUT,     RPS.PARAM_PRECISION AS DATA_PRECISION,     RPS.PARAM_SCALE AS DATA_SCALE,     CASE RPS.PARAM_CHARSET WHEN 1 THEN 'BINARY' WHEN 2 THEN 'UTF8MB4' ELSE NULL END AS CHARACTER_SET_NAME,     CASE RPS.PARAM_COLL_TYPE WHEN 45 THEN 'UTF8MB4_GENERAL_CI' WHEN 46 THEN 'UTF8MB4_BIN' WHEN 63 THEN 'BINARY' ELSE NULL END AS COLLATION,     RPS.TYPE_OWNER AS TYPE_OWNER,     RPS.TYPE_NAME AS TYPE_NAME,     RPS.TYPE_SUBNAME AS TYPE_SUBNAME,     RPS.TENANT_ID AS ORIGIN_CON_ID   FROM     SYS.ALL_VIRTUAL_ROUTINE_PARAM_SYS_AGENT RPS     LEFT JOIN SYS.ALL_VIRTUAL_ROUTINE_SYS_AGENT RS       ON RPS.ROUTINE_ID = RS.ROUTINE_ID AND RS.ROUTINE_TYPE != 1 AND RS.ROUTINE_TYPE != 2     LEFT JOIN SYS.ALL_VIRTUAL_PACKAGE_SYS_AGENT PS       ON RS.PACKAGE_ID = PS.PACKAGE_ID AND RS.ROUTINE_TYPE = 3     LEFT JOIN SYS.ALL_VIRTUAL_TYPE_SYS_AGENT TS       ON RS.PACKAGE_ID = TS.TYPE_ID AND RS.ROUTINE_TYPE = 4     LEFT JOIN SYS.ALL_VIRTUAL_DATA_TYPE VV ON RPS.PARAM_TYPE = VV.DATA_TYPE )__"))) {
 | 
			
		||||
      LOG_ERROR("fail to set view_definition", K(ret));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@ -409,7 +409,7 @@ int ObInnerTableSchema::all_arguments_schema(ObTableSchema &table_schema)
 | 
			
		||||
  table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset()));
 | 
			
		||||
 | 
			
		||||
  if (OB_SUCC(ret)) {
 | 
			
		||||
    if (OB_FAIL(table_schema.set_view_definition(R"__(   SELECT     D.DATABASE_NAME AS OWNER,     R.ROUTINE_NAME AS OBJECT_NAME,     CASE R.ROUTINE_TYPE       WHEN 1 THEN NULL       WHEN 2 THEN NULL       WHEN 3 THEN P.PACKAGE_NAME       WHEN 4 THEN T.TYPE_NAME END AS PACKAGE_NAME,     CASE R.ROUTINE_TYPE       WHEN 1 THEN R.ROUTINE_ID       WHEN 2 THEN R.ROUTINE_ID       WHEN 3 THEN P.PACKAGE_ID       WHEN 4 THEN T.TYPE_ID END AS OBJECT_ID,     CASE R.OVERLOAD WHEN 0 THEN NULL ELSE R.OVERLOAD END AS OVERLOAD,     CASE R.SUBPROGRAM_ID WHEN 0 THEN 1 ELSE R.SUBPROGRAM_ID END AS SUBPROGRAM_ID,     RP.PARAM_NAME AS ARGUMENT_NAME,     RP.PARAM_POSITION AS POSITION,     RP.SEQUENCE AS SEQUENCE,     RP.PARAM_LEVEL AS DATA_LEVEL,     V.DATA_TYPE_STR AS DATA_TYPE,     CAST(CASE WHEN RP.DEFAULT_VALUE IS NULL THEN 'N' ELSE 'Y' END AS VARCHAR(1)) AS DEFAULTED,     RP.PARAM_LENGTH AS DATA_LENGTH,     DECODE(BITAND(RP.FLAG, 3), 1, 'IN', 2, 'OUT', 3, 'INOUT', 0, 'OUT') AS IN_OUT,     RP.PARAM_PRECISION AS DATA_PRECISION,     RP.PARAM_SCALE AS DATA_SCALE,     CASE RP.PARAM_CHARSET WHEN 1 THEN 'BINARY' WHEN 2 THEN 'UTF8MB4' ELSE NULL END AS CHARACTER_SET_NAME,     CASE RP.PARAM_COLL_TYPE WHEN 45 THEN 'UTF8MB4_GENERAL_CI' WHEN 46 THEN 'UTF8MB4_BIN' WHEN 63 THEN 'BINARY' ELSE NULL END AS COLLATION,     RP.TYPE_OWNER AS TYPE_OWNER,     RP.TYPE_NAME AS TYPE_NAME,     RP.TYPE_SUBNAME AS TYPE_SUBNAME,     RP.TENANT_ID AS ORIGIN_CON_ID   FROM     (SELECT * FROM SYS.ALL_VIRTUAL_ROUTINE_PARAM_REAL_AGENT       WHERE TENANT_ID = EFFECTIVE_TENANT_ID()) RP     LEFT JOIN SYS.ALL_VIRTUAL_ROUTINE_REAL_AGENT R ON RP.ROUTINE_ID = R.ROUTINE_ID       AND R.TENANT_ID = EFFECTIVE_TENANT_ID()     LEFT JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT D ON R.DATABASE_ID = D.DATABASE_ID       AND D.TENANT_ID = EFFECTIVE_TENANT_ID()     LEFT JOIN SYS.ALL_VIRTUAL_PACKAGE_REAL_AGENT P ON R.PACKAGE_ID = P.PACKAGE_ID AND R.ROUTINE_TYPE = 3       AND P.TENANT_ID = EFFECTIVE_TENANT_ID()     LEFT JOIN SYS.ALL_VIRTUAL_TYPE_REAL_AGENT T ON R.PACKAGE_ID = T.TYPE_ID AND R.ROUTINE_TYPE = 4       AND T.TENANT_ID = EFFECTIVE_TENANT_ID()     LEFT JOIN SYS.ALL_VIRTUAL_DATA_TYPE V ON RP.PARAM_TYPE = V.DATA_TYPE   WHERE     D.IN_RECYCLEBIN = 0     AND (R.DATABASE_ID = USERENV('SCHEMAID')       OR USER_CAN_ACCESS_OBJ(12, RP.ROUTINE_ID, R.DATABASE_ID) = 1)   UNION ALL   SELECT     CAST('SYS' AS VARCHAR2(30)) AS OWNER,     RS.ROUTINE_NAME AS OBJECT_NAME,     CASE RS.ROUTINE_TYPE       WHEN 1 THEN NULL       WHEN 2 THEN NULL       WHEN 3 THEN PS.PACKAGE_NAME       WHEN 4 THEN TS.TYPE_NAME END AS PACKAGE_NAME,     CASE RS.ROUTINE_TYPE       WHEN 1 THEN RS.ROUTINE_ID       WHEN 2 THEN RS.ROUTINE_ID       WHEN 3 THEN PS.PACKAGE_ID       WHEN 4 THEN TS.TYPE_ID END AS OBJECT_ID,     CASE RS.OVERLOAD WHEN 0 THEN NULL ELSE RS.OVERLOAD END AS OVERLOAD,     CASE RS.SUBPROGRAM_ID WHEN 0 THEN 1 ELSE RS.SUBPROGRAM_ID END AS SUBPROGRAM_ID,     RPS.PARAM_NAME AS ARGUMENT_NAME,     RPS.PARAM_POSITION AS POSITION,     RPS.SEQUENCE AS SEQUENCE,     RPS.PARAM_LEVEL AS DATA_LEVEL,     VV.DATA_TYPE_STR AS DATA_TYPE,     CAST(CASE WHEN RPS.DEFAULT_VALUE IS NULL THEN 'N' ELSE 'Y' END AS VARCHAR(1)) AS DEFAULTED,     RPS.PARAM_LENGTH AS DATA_LENGTH,     DECODE(BITAND(RPS.FLAG, 3), 1, 'IN', 2, 'OUT', 3, 'INOUT') AS IN_OUT,     RPS.PARAM_PRECISION AS DATA_PRECISION,     RPS.PARAM_SCALE AS DATA_SCALE,     CASE RPS.PARAM_CHARSET WHEN 1 THEN 'BINARY' WHEN 2 THEN 'UTF8MB4' ELSE NULL END AS CHARACTER_SET_NAME,     CASE RPS.PARAM_COLL_TYPE WHEN 45 THEN 'UTF8MB4_GENERAL_CI' WHEN 46 THEN 'UTF8MB4_BIN' WHEN 63 THEN 'BINARY' ELSE NULL END AS COLLATION,     RPS.TYPE_OWNER AS TYPE_OWNER,     RPS.TYPE_NAME AS TYPE_NAME,     RPS.TYPE_SUBNAME AS TYPE_SUBNAME,     RPS.TENANT_ID AS ORIGIN_CON_ID   FROM     SYS.ALL_VIRTUAL_ROUTINE_PARAM_SYS_AGENT RPS     LEFT JOIN SYS.ALL_VIRTUAL_ROUTINE_SYS_AGENT RS       ON RPS.ROUTINE_ID = RS.ROUTINE_ID AND RS.ROUTINE_TYPE != 1 AND RS.ROUTINE_TYPE != 2     LEFT JOIN SYS.ALL_VIRTUAL_PACKAGE_SYS_AGENT PS       ON RS.PACKAGE_ID = PS.PACKAGE_ID AND RS.ROUTINE_TYPE = 3     LEFT JOIN SYS.ALL_VIRTUAL_TYPE_SYS_AGENT TS       ON RS.PACKAGE_ID = TS.TYPE_ID AND RS.ROUTINE_TYPE = 4     LEFT JOIN SYS.ALL_VIRTUAL_DATA_TYPE VV ON RPS.PARAM_TYPE = VV.DATA_TYPE )__"))) {
 | 
			
		||||
    if (OB_FAIL(table_schema.set_view_definition(R"__(   SELECT     D.DATABASE_NAME AS OWNER,     R.ROUTINE_NAME AS OBJECT_NAME,     CASE R.ROUTINE_TYPE       WHEN 1 THEN NULL       WHEN 2 THEN NULL       WHEN 3 THEN P.PACKAGE_NAME       WHEN 4 THEN T.TYPE_NAME END AS PACKAGE_NAME,     CASE R.ROUTINE_TYPE       WHEN 1 THEN R.ROUTINE_ID       WHEN 2 THEN R.ROUTINE_ID       WHEN 3 THEN P.PACKAGE_ID       WHEN 4 THEN T.TYPE_ID END AS OBJECT_ID,     CASE R.OVERLOAD WHEN 0 THEN NULL ELSE R.OVERLOAD END AS OVERLOAD,     CASE R.SUBPROGRAM_ID WHEN 0 THEN 1 ELSE R.SUBPROGRAM_ID END AS SUBPROGRAM_ID,     RP.PARAM_NAME AS ARGUMENT_NAME,     RP.PARAM_POSITION AS POSITION,     RP.SEQUENCE AS SEQUENCE,     RP.PARAM_LEVEL AS DATA_LEVEL,     CASE RP.TYPE_NAME        WHEN 'SYS_REFCURSOR' THEN 'REF CURSOR'       ELSE V.DATA_TYPE_STR END AS DATA_TYPE,     CAST(CASE WHEN RP.DEFAULT_VALUE IS NULL THEN 'N' ELSE 'Y' END AS VARCHAR(1)) AS DEFAULTED,     RP.PARAM_LENGTH AS DATA_LENGTH,     DECODE(BITAND(RP.FLAG, 3), 1, 'IN', 2, 'OUT', 3, 'INOUT', 0, 'OUT') AS IN_OUT,     RP.PARAM_PRECISION AS DATA_PRECISION,     RP.PARAM_SCALE AS DATA_SCALE,     CASE RP.PARAM_CHARSET WHEN 1 THEN 'BINARY' WHEN 2 THEN 'UTF8MB4' ELSE NULL END AS CHARACTER_SET_NAME,     CASE RP.PARAM_COLL_TYPE WHEN 45 THEN 'UTF8MB4_GENERAL_CI' WHEN 46 THEN 'UTF8MB4_BIN' WHEN 63 THEN 'BINARY' ELSE NULL END AS COLLATION,     RP.TYPE_OWNER AS TYPE_OWNER,     RP.TYPE_NAME AS TYPE_NAME,     RP.TYPE_SUBNAME AS TYPE_SUBNAME,     RP.TENANT_ID AS ORIGIN_CON_ID   FROM     (SELECT * FROM SYS.ALL_VIRTUAL_ROUTINE_PARAM_REAL_AGENT       WHERE TENANT_ID = EFFECTIVE_TENANT_ID()) RP     LEFT JOIN SYS.ALL_VIRTUAL_ROUTINE_REAL_AGENT R ON RP.ROUTINE_ID = R.ROUTINE_ID       AND R.TENANT_ID = EFFECTIVE_TENANT_ID()     LEFT JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT D ON R.DATABASE_ID = D.DATABASE_ID       AND D.TENANT_ID = EFFECTIVE_TENANT_ID()     LEFT JOIN SYS.ALL_VIRTUAL_PACKAGE_REAL_AGENT P ON R.PACKAGE_ID = P.PACKAGE_ID AND R.ROUTINE_TYPE = 3       AND P.TENANT_ID = EFFECTIVE_TENANT_ID()     LEFT JOIN SYS.ALL_VIRTUAL_TYPE_REAL_AGENT T ON R.PACKAGE_ID = T.TYPE_ID AND R.ROUTINE_TYPE = 4       AND T.TENANT_ID = EFFECTIVE_TENANT_ID()     LEFT JOIN SYS.ALL_VIRTUAL_DATA_TYPE V ON RP.PARAM_TYPE = V.DATA_TYPE   WHERE     D.IN_RECYCLEBIN = 0     AND (R.DATABASE_ID = USERENV('SCHEMAID')       OR USER_CAN_ACCESS_OBJ(12, RP.ROUTINE_ID, R.DATABASE_ID) = 1)   UNION ALL   SELECT     CAST('SYS' AS VARCHAR2(30)) AS OWNER,     RS.ROUTINE_NAME AS OBJECT_NAME,     CASE RS.ROUTINE_TYPE       WHEN 1 THEN NULL       WHEN 2 THEN NULL       WHEN 3 THEN PS.PACKAGE_NAME       WHEN 4 THEN TS.TYPE_NAME END AS PACKAGE_NAME,     CASE RS.ROUTINE_TYPE       WHEN 1 THEN RS.ROUTINE_ID       WHEN 2 THEN RS.ROUTINE_ID       WHEN 3 THEN PS.PACKAGE_ID       WHEN 4 THEN TS.TYPE_ID END AS OBJECT_ID,     CASE RS.OVERLOAD WHEN 0 THEN NULL ELSE RS.OVERLOAD END AS OVERLOAD,     CASE RS.SUBPROGRAM_ID WHEN 0 THEN 1 ELSE RS.SUBPROGRAM_ID END AS SUBPROGRAM_ID,     RPS.PARAM_NAME AS ARGUMENT_NAME,     RPS.PARAM_POSITION AS POSITION,     RPS.SEQUENCE AS SEQUENCE,     RPS.PARAM_LEVEL AS DATA_LEVEL,     CASE RPS.TYPE_NAME        WHEN 'SYS_REFCURSOR' THEN 'REF CURSOR'       ELSE VV.DATA_TYPE_STR END AS DATA_TYPE,     CAST(CASE WHEN RPS.DEFAULT_VALUE IS NULL THEN 'N' ELSE 'Y' END AS VARCHAR(1)) AS DEFAULTED,     RPS.PARAM_LENGTH AS DATA_LENGTH,     DECODE(BITAND(RPS.FLAG, 3), 1, 'IN', 2, 'OUT', 3, 'INOUT') AS IN_OUT,     RPS.PARAM_PRECISION AS DATA_PRECISION,     RPS.PARAM_SCALE AS DATA_SCALE,     CASE RPS.PARAM_CHARSET WHEN 1 THEN 'BINARY' WHEN 2 THEN 'UTF8MB4' ELSE NULL END AS CHARACTER_SET_NAME,     CASE RPS.PARAM_COLL_TYPE WHEN 45 THEN 'UTF8MB4_GENERAL_CI' WHEN 46 THEN 'UTF8MB4_BIN' WHEN 63 THEN 'BINARY' ELSE NULL END AS COLLATION,     RPS.TYPE_OWNER AS TYPE_OWNER,     RPS.TYPE_NAME AS TYPE_NAME,     RPS.TYPE_SUBNAME AS TYPE_SUBNAME,     RPS.TENANT_ID AS ORIGIN_CON_ID   FROM     SYS.ALL_VIRTUAL_ROUTINE_PARAM_SYS_AGENT RPS     LEFT JOIN SYS.ALL_VIRTUAL_ROUTINE_SYS_AGENT RS       ON RPS.ROUTINE_ID = RS.ROUTINE_ID AND RS.ROUTINE_TYPE != 1 AND RS.ROUTINE_TYPE != 2     LEFT JOIN SYS.ALL_VIRTUAL_PACKAGE_SYS_AGENT PS       ON RS.PACKAGE_ID = PS.PACKAGE_ID AND RS.ROUTINE_TYPE = 3     LEFT JOIN SYS.ALL_VIRTUAL_TYPE_SYS_AGENT TS       ON RS.PACKAGE_ID = TS.TYPE_ID AND RS.ROUTINE_TYPE = 4     LEFT JOIN SYS.ALL_VIRTUAL_DATA_TYPE VV ON RPS.PARAM_TYPE = VV.DATA_TYPE )__"))) {
 | 
			
		||||
      LOG_ERROR("fail to set view_definition", K(ret));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@ -559,7 +559,7 @@ int ObInnerTableSchema::user_arguments_schema(ObTableSchema &table_schema)
 | 
			
		||||
  table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset()));
 | 
			
		||||
 | 
			
		||||
  if (OB_SUCC(ret)) {
 | 
			
		||||
    if (OB_FAIL(table_schema.set_view_definition(R"__(     SELECT       R.ROUTINE_NAME AS OBJECT_NAME,         CASE R.ROUTINE_TYPE         WHEN 1 THEN NULL         WHEN 2 THEN NULL         WHEN 3 THEN P.PACKAGE_NAME         WHEN 4 THEN T.TYPE_NAME END AS PACKAGE_NAME,       CASE R.ROUTINE_TYPE         WHEN 1 THEN R.ROUTINE_ID         WHEN 2 THEN R.ROUTINE_ID         WHEN 3 THEN P.PACKAGE_ID         WHEN 4 THEN T.TYPE_ID END AS OBJECT_ID,       CASE R.OVERLOAD WHEN 0 THEN NULL ELSE R.OVERLOAD END AS OVERLOAD,       CASE R.SUBPROGRAM_ID WHEN 0 THEN 1 ELSE R.SUBPROGRAM_ID END AS SUBPROGRAM_ID,       RP.PARAM_NAME AS ARGUMENT_NAME,       RP.PARAM_POSITION AS POSITION,       RP.SEQUENCE AS SEQUENCE,       RP.PARAM_LEVEL AS DATA_LEVEL,       V.DATA_TYPE_STR AS DATA_TYPE,       CAST(CASE WHEN RP.DEFAULT_VALUE IS NULL THEN 'N' ELSE 'Y' END AS VARCHAR(1)) AS DEFAULTED,       RP.PARAM_LENGTH AS DATA_LENGTH,       DECODE(BITAND(RP.FLAG, 3), 1, 'IN', 2, 'OUT', 3, 'INOUT', 0, 'OUT') AS IN_OUT,       RP.PARAM_PRECISION AS DATA_PRECISION,       RP.PARAM_SCALE AS DATA_SCALE,       CASE RP.PARAM_CHARSET WHEN 1 THEN 'BINARY' WHEN 2 THEN 'UTF8MB4' ELSE NULL END AS CHARACTER_SET_NAME,       CASE RP.PARAM_COLL_TYPE WHEN 45 THEN 'UTF8MB4_GENERAL_CI' WHEN 46 THEN 'UTF8MB4_BIN' WHEN 63 THEN 'BINARY' ELSE NULL END AS COLLATION,       RP.TYPE_OWNER AS TYPE_OWNER,       RP.TYPE_NAME AS TYPE_NAME,       RP.TYPE_SUBNAME AS TYPE_SUBNAME,       RP.TENANT_ID AS ORIGIN_CON_ID     FROM       (SELECT * FROM SYS.ALL_VIRTUAL_ROUTINE_PARAM_REAL_AGENT         WHERE TENANT_ID = EFFECTIVE_TENANT_ID())RP       LEFT JOIN SYS.ALL_VIRTUAL_ROUTINE_REAL_AGENT R ON RP.ROUTINE_ID = R.ROUTINE_ID         AND R.TENANT_ID = EFFECTIVE_TENANT_ID()       LEFT JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT D ON R.DATABASE_ID = D.DATABASE_ID         AND D.TENANT_ID = EFFECTIVE_TENANT_ID()       LEFT JOIN SYS.ALL_VIRTUAL_PACKAGE_REAL_AGENT P ON R.PACKAGE_ID = P.PACKAGE_ID AND R.ROUTINE_TYPE = 3         AND P.TENANT_ID = EFFECTIVE_TENANT_ID()      LEFT JOIN SYS.ALL_VIRTUAL_TYPE_REAL_AGENT T ON R.PACKAGE_ID = T.TYPE_ID AND R.ROUTINE_TYPE = 4       AND T.TENANT_ID = EFFECTIVE_TENANT_ID()       LEFT JOIN SYS.ALL_VIRTUAL_DATA_TYPE V ON RP.PARAM_TYPE = V.DATA_TYPE     WHERE       D.IN_RECYCLEBIN = 0       AND R.DATABASE_ID = USERENV('SCHEMAID') )__"))) {
 | 
			
		||||
    if (OB_FAIL(table_schema.set_view_definition(R"__(     SELECT       R.ROUTINE_NAME AS OBJECT_NAME,         CASE R.ROUTINE_TYPE         WHEN 1 THEN NULL         WHEN 2 THEN NULL         WHEN 3 THEN P.PACKAGE_NAME         WHEN 4 THEN T.TYPE_NAME END AS PACKAGE_NAME,       CASE R.ROUTINE_TYPE         WHEN 1 THEN R.ROUTINE_ID         WHEN 2 THEN R.ROUTINE_ID         WHEN 3 THEN P.PACKAGE_ID         WHEN 4 THEN T.TYPE_ID END AS OBJECT_ID,       CASE R.OVERLOAD WHEN 0 THEN NULL ELSE R.OVERLOAD END AS OVERLOAD,       CASE R.SUBPROGRAM_ID WHEN 0 THEN 1 ELSE R.SUBPROGRAM_ID END AS SUBPROGRAM_ID,       RP.PARAM_NAME AS ARGUMENT_NAME,       RP.PARAM_POSITION AS POSITION,       RP.SEQUENCE AS SEQUENCE,       RP.PARAM_LEVEL AS DATA_LEVEL,       CASE RP.TYPE_NAME        WHEN 'SYS_REFCURSOR' THEN 'REF CURSOR'       ELSE V.DATA_TYPE_STR END AS DATA_TYPE,       CAST(CASE WHEN RP.DEFAULT_VALUE IS NULL THEN 'N' ELSE 'Y' END AS VARCHAR(1)) AS DEFAULTED,       RP.PARAM_LENGTH AS DATA_LENGTH,       DECODE(BITAND(RP.FLAG, 3), 1, 'IN', 2, 'OUT', 3, 'INOUT', 0, 'OUT') AS IN_OUT,       RP.PARAM_PRECISION AS DATA_PRECISION,       RP.PARAM_SCALE AS DATA_SCALE,       CASE RP.PARAM_CHARSET WHEN 1 THEN 'BINARY' WHEN 2 THEN 'UTF8MB4' ELSE NULL END AS CHARACTER_SET_NAME,       CASE RP.PARAM_COLL_TYPE WHEN 45 THEN 'UTF8MB4_GENERAL_CI' WHEN 46 THEN 'UTF8MB4_BIN' WHEN 63 THEN 'BINARY' ELSE NULL END AS COLLATION,       RP.TYPE_OWNER AS TYPE_OWNER,       RP.TYPE_NAME AS TYPE_NAME,       RP.TYPE_SUBNAME AS TYPE_SUBNAME,       RP.TENANT_ID AS ORIGIN_CON_ID     FROM       (SELECT * FROM SYS.ALL_VIRTUAL_ROUTINE_PARAM_REAL_AGENT         WHERE TENANT_ID = EFFECTIVE_TENANT_ID())RP       LEFT JOIN SYS.ALL_VIRTUAL_ROUTINE_REAL_AGENT R ON RP.ROUTINE_ID = R.ROUTINE_ID         AND R.TENANT_ID = EFFECTIVE_TENANT_ID()       LEFT JOIN SYS.ALL_VIRTUAL_DATABASE_REAL_AGENT D ON R.DATABASE_ID = D.DATABASE_ID         AND D.TENANT_ID = EFFECTIVE_TENANT_ID()       LEFT JOIN SYS.ALL_VIRTUAL_PACKAGE_REAL_AGENT P ON R.PACKAGE_ID = P.PACKAGE_ID AND R.ROUTINE_TYPE = 3         AND P.TENANT_ID = EFFECTIVE_TENANT_ID()      LEFT JOIN SYS.ALL_VIRTUAL_TYPE_REAL_AGENT T ON R.PACKAGE_ID = T.TYPE_ID AND R.ROUTINE_TYPE = 4       AND T.TENANT_ID = EFFECTIVE_TENANT_ID()       LEFT JOIN SYS.ALL_VIRTUAL_DATA_TYPE V ON RP.PARAM_TYPE = V.DATA_TYPE     WHERE       D.IN_RECYCLEBIN = 0       AND R.DATABASE_ID = USERENV('SCHEMAID') )__"))) {
 | 
			
		||||
      LOG_ERROR("fail to set view_definition", K(ret));
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user