Compute
Elastic Cloud Server
Huawei Cloud Flexus
Bare Metal Server
Auto Scaling
Image Management Service
Dedicated Host
FunctionGraph
Cloud Phone Host
Huawei Cloud EulerOS
Networking
Virtual Private Cloud
Elastic IP
Elastic Load Balance
NAT Gateway
Direct Connect
Virtual Private Network
VPC Endpoint
Cloud Connect
Enterprise Router
Enterprise Switch
Global Accelerator
Management & Governance
Cloud Eye
Identity and Access Management
Cloud Trace Service
Resource Formation Service
Tag Management Service
Log Tank Service
Config
OneAccess
Resource Access Manager
Simple Message Notification
Application Performance Management
Application Operations Management
Organizations
Optimization Advisor
IAM Identity Center
Cloud Operations Center
Resource Governance Center
Migration
Server Migration Service
Object Storage Migration Service
Cloud Data Migration
Migration Center
Cloud Ecosystem
KooGallery
Partner Center
User Support
My Account
Billing Center
Cost Center
Resource Center
Enterprise Management
Service Tickets
HUAWEI CLOUD (International) FAQs
ICP Filing
Support Plans
My Credentials
Customer Operation Capabilities
Partner Support Plans
Professional Services
Analytics
MapReduce Service
Data Lake Insight
CloudTable Service
Cloud Search Service
Data Lake Visualization
Data Ingestion Service
GaussDB(DWS)
DataArts Studio
Data Lake Factory
DataArts Lake Formation
IoT
IoT Device Access
Others
Product Pricing Details
System Permissions
Console Quick Start
Common FAQs
Instructions for Associating with a HUAWEI CLOUD Partner
Message Center
Security & Compliance
Security Technologies and Applications
Web Application Firewall
Host Security Service
Cloud Firewall
SecMaster
Anti-DDoS Service
Data Encryption Workshop
Database Security Service
Cloud Bastion Host
Data Security Center
Cloud Certificate Manager
Edge Security
Managed Threat Detection
Blockchain
Blockchain Service
Web3 Node Engine Service
Media Services
Media Processing Center
Video On Demand
Live
SparkRTC
MetaStudio
Storage
Object Storage Service
Elastic Volume Service
Cloud Backup and Recovery
Storage Disaster Recovery Service
Scalable File Service Turbo
Scalable File Service
Volume Backup Service
Cloud Server Backup Service
Data Express Service
Dedicated Distributed Storage Service
Containers
Cloud Container Engine
SoftWare Repository for Container
Application Service Mesh
Ubiquitous Cloud Native Service
Cloud Container Instance
Databases
Relational Database Service
Document Database Service
Data Admin Service
Data Replication Service
GeminiDB
GaussDB
Distributed Database Middleware
Database and Application Migration UGO
TaurusDB
Middleware
Distributed Cache Service
API Gateway
Distributed Message Service for Kafka
Distributed Message Service for RabbitMQ
Distributed Message Service for RocketMQ
Cloud Service Engine
Multi-Site High Availability Service
EventGrid
Dedicated Cloud
Dedicated Computing Cluster
Business Applications
Workspace
ROMA Connect
Message & SMS
Domain Name Service
Edge Data Center Management
Meeting
AI
Face Recognition Service
Graph Engine Service
Content Moderation
Image Recognition
Optical Character Recognition
ModelArts
ImageSearch
Conversational Bot Service
Speech Interaction Service
Huawei HiLens
Video Intelligent Analysis Service
Developer Tools
SDK Developer Guide
API Request Signing Guide
Terraform
Koo Command Line Interface
Content Delivery & Edge Computing
Content Delivery Network
Intelligent EdgeFabric
CloudPond
Intelligent EdgeCloud
Solutions
SAP Cloud
High Performance Computing
Developer Services
ServiceStage
CodeArts
CodeArts PerfTest
CodeArts Req
CodeArts Pipeline
CodeArts Build
CodeArts Deploy
CodeArts Artifact
CodeArts TestPlan
CodeArts Check
CodeArts Repo
Cloud Application Engine
MacroVerse aPaaS
KooMessage
KooPhone
KooDrive
On this page

DBE_DESCRIBE

Updated on 2024-08-20 GMT+08:00

Data Types

The advanced package DBE_DESCRIBE has two built-in data types. The two data types are created using user-defined types and are used for the return values of the DESCRIBE_PROCEDURE API.

  • DBE_DESCRIBE.NUMBER_TABLE

    This type is the TABLE type of NUMBER and is implemented through the TABLE OF syntax.

    The prototype of the DBE_DESCRIBE.NUMBER_TABLE type is as follows:

    1
    CREATE TYPE DBE_DESCRIBE.NUMBER_TABLE AS TABLE OF NUMBER INDEX BY INTEGER;
    
  • DBE_DESCRIBE.VARCHAR2_TABLE

    This type is the TABLE type of VARCHAR2 and is implemented through the TABLE OF syntax.

    The prototype of the DBE_DESCRIBE.VARCHAR2_TABLE type is as follows:

    1
    CREATE TYPE DBE_DESCRIBE.VARCHAR2_TABLE AS TABLE OF VARCHAR2(30) INDEX BY INTEGER;
    

API Description

The advanced package DBE_DESCRIBE provides the DESCRIBE_PROCEDURE API to return the parameter information (such as parameter names and parameter data types) of functions or stored procedures in a list.

Table 1 DBE_DESCRIBE overview

API

Description

DBE_DESCRIBE.DESCRIBE_PROCEDURE

Displays the parameters of a stored procedure or function.

  • DBE_DESCRIBE.DESCRIBE_PROCEDURE

    The stored procedure DESCRIBE_PROCEDURE is used to display the parameter information of a stored procedure or function, such as the parameter name, parameter mode, and parameter location. The parameter information of a function or stored procedure is returned in a list.

    The prototype of the DBE_DESCRIBE.DESCRIBE_PROCEDURE function is as follows:

    DBE_DESCRIBE.DESCRIBE_PROCEDURE(
      object_name                IN  VARCHAR2,
      reserved1                  IN  VARCHAR2,
      reserved2                  IN  VARCHAR2,
      overload                   OUT DBE_DESCRIBE.NUMBER_TABLE,
      dataposition               OUT DBE_DESCRIBE.NUMBER_TABLE,
      datalevel                  OUT DBE_DESCRIBE.NUMBER_TABLE,
      argument_name              OUT DBE_DESCRIBE.VARCHAR2_TABLE,
      datatype                   OUT DBE_DESCRIBE.NUMBER_TABLE,
      default_value              OUT DBE_DESCRIBE.NUMBER_TABLE,
      in_out                     OUT DBE_DESCRIBE.NUMBER_TABLE,
      datalength                 OUT DBE_DESCRIBE.NUMBER_TABLE,
      dataprecision              OUT DBE_DESCRIBE.NUMBER_TABLE,
      scale                      OUT DBE_DESCRIBE.NUMBER_TABLE,
      radix                      OUT DBE_DESCRIBE.NUMBER_TABLE,
      spare                      OUT DBE_DESCRIBE.NUMBER_TABLE,
      include_string_constraints OUT BOOLEAN
    );
    Table 2 DBE_DESCRIBE.DESCRIBE_PROCEDURE API

    Parameter

    Type

    Whether NULL Is Allowed

    Description

    object_name

    varchar2

    No

    Stored procedure name. The syntax format of this parameter is [[schema.]package.]function[@dblink], in which:

    • schema (optional): schema name.
    • package (optional): package name.
    • function (required): name of a function or stored procedure.
    • dblink (optional): remote connection name.

    reserved1

    varchar2

    Yes

    Reserved parameter.

    reserved2

    varchar2

    Yes

    Reserved parameter.

    overload

    number_table

    Yes

    Unique ID assigned to a stored procedure or function. If a stored procedure or function is overloaded, overload is each overload of the stored procedure or function. Overload is numbered from 1 in ascending order based on the entire stored procedure or function. If a stored procedure or function is not overloaded, overload is set to 0.

    dataposition

    number_table

    Yes

    Position of a specified parameter in the parameter list.

    datalevel

    number_table

    Yes

    It is set to 0.

    argument_name

    varchar2_table

    Yes

    Name of the parameter associated with the specified stored procedure.

    datatype

    number_table

    Yes

    OID of the data type of the specified parameter.

    default_value

    number_table

    Yes

    If the specified parameter has a default value, the value is 1. Otherwise, the value is 0.

    in_out

    number_table

    Yes

    Parameter mode. The options are as follows:

    • 0: IN
    • 1: OUT
    • 2: IN OUT

    datalength

    number_table

    Yes

    Not supported. Set it to 0 by default.

    dataprecision

    number_table

    Yes

    Not supported. Set it to 0 by default.

    scale

    number_table

    Yes

    Not supported. Set it to 0 by default.

    radix

    number_table

    Yes

    If the value is of the numeric type (such as NUMBER and INTEGER), 10 is returned. Otherwise, 0 is returned. For details about the numeric type, see numeric types.

    spare

    number_table

    Yes

    Reserved parameter. Set it to 0 by default.

    include_string_constraints

    Boolean

    Yes

    Reserved parameter, which does not need to be processed.

    NOTE:
    • The data type of the datatype parameter is different from that of the A-compatible database. The GaussDB returns the OID of the data type, and the A-compatible database returns the number of the data type in the A-compatible database.
    • The include_string_constraints parameter does not take effect on the stored procedure. The value of the include_string_constraints parameter does not change, and the return values of other parameters are not affected.
    • The OIDs of the data types created by the create type operation are uncertain. Therefore, do not use these OIDs for fixed judgment.
    • For the dataposition parameter, if a stored procedure is specified, the return value starts from 1. If a function is specified, the return value starts from 0. 0 indicates the position sequence number of the return value of the function.
    • For the argument_name parameter, if a function is specified, the first position of the return value is empty. This position indicates the name of the return value of the described function (that is, the empty name).
    • Do not directly specify a package. Otherwise, an error is reported.
    • If you do not have the execute permission on a stored procedure, function, or package, the system considers that the stored procedure, function, or package does not exist and reports an error.
    • The input parameters reserved1 and reserved2 are not involved in internal processing. Entering any character string does not affect the returned result.
    • The advanced package cannot specify the stored procedures or functions obtained through DBLINK.
    • You are advised to add the schema prefix before the specified stored procedure or function. If the schema prefix is omitted, the advanced package uses the schema of the current session to search for the entity to which the advanced package belongs. In this case, you need to change the value of behavior_compat_options to bind_procedure_searchpath for the advanced package to take effect.
    • If the %type operation is used to obtain the data type from a table column, the constraint on the data type (such as NUMBER(3) and VARCHAR2(10)) is not retained.

    Example:

    -- Create a stored procedure to encapsulate the advanced package for printing return values.
    CREATE PROCEDURE PRINT_DESCRIBE (obj_name IN VARCHAR2)
    AS
      a_overload     DBE_DESCRIBE.NUMBER_TABLE;
      a_position     DBE_DESCRIBE.NUMBER_TABLE;
      a_level        DBE_DESCRIBE.NUMBER_TABLE;
      a_arg_name     DBE_DESCRIBE.VARCHAR2_TABLE;
      a_dty          DBE_DESCRIBE.NUMBER_TABLE;
      a_def_val      DBE_DESCRIBE.NUMBER_TABLE;
      a_mode         DBE_DESCRIBE.NUMBER_TABLE;
      a_length       DBE_DESCRIBE.NUMBER_TABLE;
      a_precision    DBE_DESCRIBE.NUMBER_TABLE;
      a_scale        DBE_DESCRIBE.NUMBER_TABLE;
      a_radix        DBE_DESCRIBE.NUMBER_TABLE;
      a_spare        DBE_DESCRIBE.NUMBER_TABLE;
      a_include_string_constraints BOOLEAN;
    BEGIN
      DBE_DESCRIBE.DESCRIBE_PROCEDURE(
        obj_name,
        null,
        null,
        a_overload,
        a_position,
        a_level,
        a_arg_name,
        a_dty,
        a_def_val,
        a_mode,
        a_length,
        a_precision,
        a_scale,
        a_radix,
        a_spare,
        a_include_string_constraints
      );
      dbe_output.print('overload                ' || chr(9));
      for indx in 1 .. a_overload.count 
      loop 
        dbe_output.print(a_overload(indx) || chr(9)); 
      end loop;
    
      dbe_output.print_line(' ');
    
      dbe_output.print('dataposition            ' || chr(9));
      for indx in 1 .. a_position.count 
      loop 
        dbe_output.print(a_position(indx) || chr(9)); 
      end loop;
    
      dbe_output.print_line(' ');
    
      dbe_output.print('datalevel               ' || chr(9));
      for indx in 1 .. a_level.count 
      loop 
        dbe_output.print(a_level(indx) || chr(9)); 
      end loop;
    
      dbe_output.print_line(' ');
    
      dbe_output.print('argument_name           ' || chr(9));
      for indx in 1 .. a_arg_name.count 
      loop 
        dbe_output.print(a_arg_name(indx) || chr(9)); 
      end loop;
    
      dbe_output.print_line(' ');
    
      dbe_output.print('default_value           ' || chr(9));
      for indx in 1 .. a_def_val.count 
      loop 
        dbe_output.print(a_def_val(indx) || chr(9)); 
      end loop;
    
      dbe_output.print_line(' ');
    
      dbe_output.print('in_out                  ' || chr(9));
      for indx in 1 .. a_mode.count 
      loop 
        dbe_output.print(a_mode(indx) || chr(9)); 
      end loop;
    
      dbe_output.print_line(' ');
    
      dbe_output.print('length                  ' || chr(9));
      for indx in 1 .. a_length.count 
      loop 
        dbe_output.print(a_length(indx) || chr(9)); 
      end loop;
    
      dbe_output.print_line(' ');
    
      dbe_output.print('precision               ' || chr(9));
      for indx in 1 .. a_precision.count 
      loop 
        dbe_output.print(a_precision(indx) || chr(9)); 
      end loop;
    
      dbe_output.print_line(' ');
    
      dbe_output.print('scale                   ' || chr(9));
      for indx in 1 .. a_scale.count 
      loop 
        dbe_output.print(a_scale(indx) || chr(9)); 
      end loop;
    
      dbe_output.print_line(' ');
    
      dbe_output.print('radix                   ' || chr(9));
      for indx in 1 .. a_radix.count 
      loop 
        dbe_output.print(a_radix(indx) || chr(9)); 
      end loop;
    
      dbe_output.print_line(' ');
    END;
    /
    
    -- Create a function with three overloads.
    CREATE OR REPLACE FUNCTION TEST_FUNC_OVERLOAD (
      param_a IN NUMBER,
      param_b IN VARCHAR2,
      param_c OUT TEXT
    )
    RETURN VARCHAR2 package
    AS
    BEGIN
      dbe_output.print_line('This procedure/function test num param.');
      RETURN 'This procedure/function test num param.';
    END;
    /
    
    CREATE OR REPLACE FUNCTION TEST_FUNC_OVERLOAD (
      param_a IN NUMBER DEFAULT 20,
      param_b VARCHAR2 DEFAULT 'n',
      param_c IN TEXT, param_d OUT DATE,
      param_e INOUT RAW
    )
    RETURN VARCHAR2 package
    AS
    BEGIN
      dbe_output.print_line('This procedure/function test num param.');
      RETURN 'This procedure/function test num param.';
    END;
    /
    
    CREATE OR REPLACE FUNCTION TEST_FUNC_OVERLOAD (
      param_a IN NUMBER DEFAULT 20,
      param_b VARCHAR2 DEFAULT 'n',
      param_c IN TEXT, param_d IN DATE,
      param_e OUT RAW, param_f INOUT INTEGER
    )
    RETURN VARCHAR2 package
    AS
    BEGIN
      dbe_output.print_line('This procedure/function test num param.');
      RETURN 'This procedure/function test num param.';
    END;
    /
    
    -- Call the preceding encapsulation.
    BEGIN PRINT_DESCRIBE('TEST_FUNC_OVERLOAD'); END;
    /
    
    -- Clean up.
    DROP FUNCTION TEST_FUNC_OVERLOAD (
      param_a IN NUMBER,
      param_b IN VARCHAR2,
      param_c OUT TEXT
    );
    
    DROP FUNCTION TEST_FUNC_OVERLOAD (param_a IN NUMBER,
      param_b VARCHAR2,
      param_c IN TEXT,
      param_d OUT DATE,
      param_e INOUT RAW
    );
    
    DROP FUNCTION TEST_FUNC_OVERLOAD (param_a IN NUMBER,
      param_b VARCHAR2,
      param_c IN TEXT,
      param_d IN DATE,
      param_e OUT RAW,
      param_f INOUT INTEGER
    );
    
    DROP PROCEDURE PRINT_DESCRIBE (obj_name IN VARCHAR2);

We use cookies to improve our site and your experience. By continuing to browse our site you accept our cookie policy. Find out more

Feedback

Feedback

Feedback

0/500

Selected Content

Submit selected content with the feedback