Table of Contents
Oracle PL/SQL
Return to Oracle Database, Oracle Cloud, Oracle, Oracle SQL Topics, Oracle SQL Glossary, Oracle SQL Fundamentals, SQL-based Programming Languages, Microsoft T-SQL, Microsoft SQL Server
Oracle PL/SQL
Summarize this topic in 30 paragraphs. Give code examples for each topic. Put a section heading for each paragraph. You MUST put double square brackets around each computer buzzword or jargon or technical words. Answer in MediaWiki syntax.
```mediawiki
Oracle PL/SQL Overview
Oracle PL/SQL (Procedural Language/Structured Query Language) is a database-centric programming language that extends SQL with procedural features. It provides a platform for developers to write sophisticated database applications in a server-side environment. PL/SQL combines the data manipulation power of SQL with the processing power of procedural language to create super-efficient SQL queries.
Basic Structure
A PL/SQL block consists of three sections: declaration, execution, and exception handling. The declaration section is optional and is used to declare any identifiers or variables used in the block. The execution section contains the logic of the PL/SQL block, which is mandatory. The exception handling section is also optional and is used to handle any errors or exceptions that occur during the execution of the PL/SQL block.
```sql BEGIN
-- Execution section code hereEXCEPTION
WHEN others THEN -- Exception handling code hereEND; ```
Variables and Constants
In PL/SQL, variables and constants need to be declared in the declaration section of a PL/SQL block. Variables are placeholders for storing data that may change during the PL/SQL block's execution. Constants are similar to variables, except that their values do not change once defined.
```sql DECLARE
v_number NUMBER := 10; -- Variable c_constant CONSTANT NUMBER := 20; -- ConstantBEGIN
-- Execution section code hereEND; ```
Data Types
PL/SQL supports a variety of data types, including scalar (such as NUMBER, VARCHAR2), composite (such as RECORDS and COLLECTIONS), reference, and LOB types. Choosing the appropriate data type for your variables is crucial for the performance and accuracy of your PL/SQL programs.
```sql DECLARE
v_number NUMBER(10); v_string VARCHAR2(100); v_date DATE;BEGIN
-- Execution section code hereEND; ```
Control Structures
PL/SQL provides control structures that allow you to control the flow of execution in your programs. These include conditional statements (IF-THEN-ELSE) and looping statements (LOOP, FOR LOOP, WHILE LOOP).
```sql BEGIN
IF v_number = 10 THEN -- code to be executed if condition is true ELSE -- code to be executed if condition is false END IF; FOR i IN 1..10 LOOP -- code to be executed for each iteration END LOOP;END; ```
Cursors
Cursors in PL/SQL allow you to retrieve multiple rows from a query and process each row individually. Cursors can be implicit or explicit. Implicit cursors are automatically created by Oracle for DML statements. Explicit cursors must be declared and can be controlled by OPEN, FETCH, and CLOSE operations.
```sql DECLARE
CURSOR c_emp IS SELECT * FROM employees; r_emp c_emp%ROWTYPE;BEGIN
OPEN c_emp; LOOP FETCH c_emp INTO r_emp; EXIT WHEN c_emp%NOTFOUND; -- process each row END LOOP; CLOSE c_emp;END; ```
Exception Handling
Exception handling in PL/SQL is a critical part of writing robust database applications. PL/SQL provides a mechanism to catch exceptions (errors) that occur during the execution of a PL/SQL block and respond appropriately.
```sql BEGIN
-- Execution section code hereEXCEPTION
WHEN NO_DATA_FOUND THEN -- code to handle no data found exception WHEN OTHERS THEN -- code to handle all other exceptionsEND; ```
Procedures and Functions
Procedures and functions are named PL/SQL blocks that can take parameters and be invoked. Procedures do not return a value directly, while functions return a value to the caller. Both are used to encapsulate and reuse logic in PL/SQL applications.
```sql CREATE OR REPLACE PROCEDURE proc_name(p_param1 IN NUMBER) IS BEGIN
-- procedure code hereEND;
CREATE OR REPLACE FUNCTION func_name(f_param1 IN NUMBER) RETURN NUMBER IS
v_number NUMBER;BEGIN
-- function code here RETURN v_number;END; ```
Packages
Packages are groups of related procedures, functions, variables, and other elements. They are used to modularize and encapsulate PL/SQL logic, making applications easier to understand, maintain, and extend.
```sql CREATE OR REPLACE PACKAGE my_package IS
-- Package specification PROCEDURE proc_name(p_param1 IN NUMBER); FUNCTION func_name(f_param1 IN NUMBER) RETURN NUMBER;END my_package;
CREATE OR REPLACE PACKAGE BODY my_package IS
-- Package body PROCEDURE proc_name(p_param1 IN NUMBER) IS BEGIN -- procedure implementation
END;
FUNCTION func_name(f_param1 IN NUMBER) RETURN NUMBER IS BEGIN -- function implementation RETURN f_param1; END;END my_package; ```
Triggers
Triggers are PL/SQL blocks that are automatically executed or fired when certain events occur. Triggers can be defined on tables to execute before or after inserts, updates, or deletes.
```sql CREATE OR REPLACE TRIGGER before_employee_update BEFORE UPDATE ON employees FOR EACH ROW BEGIN
-- Trigger code hereEND; ```
Dynamic SQL
Dynamic SQL in PL/SQL allows you to construct and execute SQL statements dynamically at runtime. This is useful when you need to build queries based on variable inputs.
```sql DECLARE
v_table_name VARCHAR2(50) := 'employees'; v_sql VARCHAR2(1000);BEGIN
v_sql := 'SELECT * FROM ' ]] | [[]] | [[ v_table_name; EXECUTE IMMEDIATE v_sql;END; ```
Collections
Collections in PL/SQL are composite types that can hold multiple values of the same type. There are three types of collections: VARRAYs, NESTED TABLES, and ASSOCIATIVE ARRAYS (or index-by tables).
```sql DECLARE
TYPE t_numbers IS TABLE OF NUMBER; v_numbers t_numbers := t_numbers(1, 2, 3);BEGIN
-- Use collection hereEND; ```
Bulk Collect and FORALL
Bulk operations in PL/SQL, such as BULK COLLECT and FORALL, allow for the efficient processing of multiple rows at a time, significantly improving performance for large data sets.
```sql DECLARE
TYPE t_emp_tab IS TABLE OF employees%ROWTYPE; v_emps t_emp_tab;BEGIN
SELECT * BULK COLLECT INTO v_emps FROM employees; FORALL i IN 1..v_emps.COUNT UPDATE employees SET salary = salary * 1.1 WHERE employee_id = v_emps(i).employee_id; COMMIT;END; ```
Records
Records in PL/SQL are composite data types that allow you to treat related data as a single unit. A record can contain fields with different data types, similar to a row in a database table.
```sql DECLARE
TYPE t_employee_rec IS RECORD ( employee_id employees.employee_id%TYPE, employee_name employees.first_name%TYPE ); v_emp_rec t_employee_rec;BEGIN
-- Use record hereEND; ```
Autonomous Transactions
Autonomous transactions in PL/SQL allow you to perform transactions independently of the main transaction. They are useful for logging and error handling, among other things.
```sql CREATE OR REPLACE PROCEDURE log_error(err_msg VARCHAR2) IS
PRAGMA AUTONOMOUS_TRANSACTION;BEGIN
INSERT INTO error_log (message) VALUES (err_msg); COMMIT;END; ```
Pragmas
Pragmas are compiler directives that provide additional information to the compiler but do not affect the runtime behavior of the program. The most common pragma in PL/SQL is the PRAGMA EXCEPTION_INIT which associates an exception with an Oracle error number.
```sql DECLARE
ex_custom EXCEPTION; PRAGMA EXCEPTION_INIT(ex_custom, -20001);BEGIN
-- Execution section code hereEXCEPTION
WHEN ex_custom THEN -- handle custom exceptionEND; ```
Object Types
Object types in PL/SQL allow for the definition of data types that can encapsulate data and related methods. This supports an object-oriented programming approach within Oracle databases.
```sql CREATE OR REPLACE TYPE t_employee AS OBJECT (
employee_id NUMBER, first_name VARCHAR2(50), last_name VARCHAR2(50), MEMBER FUNCTION get_full_name RETURN VARCHAR2); / CREATE OR REPLACE TYPE BODY t_employee IS
MEMBER FUNCTION get_full_name RETURN VARCHAR2 IS BEGIN RETURN first_name ]] | [[]] | [[ ' ' ]] | [[]] | [[ last_name; END;END; / ```
Pipelined Functions
Pipelined functions allow PL/SQL functions to return a result set that can be treated as a table by SQL statements. This is particularly useful for transforming data within SQL queries.
```sql CREATE OR REPLACE FUNCTION get_numbers RETURN t_numbers PIPELINED IS BEGIN
FOR i IN 1..10 LOOP PIPE ROW(i); END LOOP; RETURN;END; ```
Large Objects (LOBs)
LOBs (Large Objects) are used to store large amounts of data, such as text, images, and videos. PL/SQL provides support for managing LOBs, which include BLOB, CLOB, and NCLOB data types.
```sql DECLARE
v_blob BLOB;BEGIN
SELECT image INTO v_blob FROM employee_photos WHERE employee_id = 101; -- Use LOB hereEND; ``
`
XML in PL/SQL
XML processing in PL/SQL is facilitated through a set of functions and procedures that allow for the manipulation and retrieval of XML data. This includes generating XML documents from query results and parsing XML documents.
```sql DECLARE
v_xml XMLTYPE;BEGIN
SELECT XMLELEMENT("Employee", XMLATTRIBUTES(e.employee_id AS "ID"), XMLELEMENT("FirstName", e.first_name), XMLELEMENT("LastName", e.last_name)) INTO v_xml FROM employees e WHERE e.employee_id = 101; -- Use XML hereEND; ```
JSON in PL/SQL
Oracle Database also supports JSON data manipulation through PL/SQL, enabling the storage, generation, and parsing of JSON data directly within the database.
```sql DECLARE
v_json CLOB;BEGIN
v_json := '{"name": "John", "age": 30, "city": "New York"}'; -- Process JSON hereEND; ```
Concurrency and Locking
Concurrency control and locking mechanisms in PL/SQL ensure data integrity when multiple sessions access and modify the same data concurrently. Techniques include optimistic locking, pessimistic locking, and using Oracle's built-in locking mechanisms.
```sql BEGIN
SELECT salary INTO v_salary FROM employees WHERE employee_id = 101 FOR UPDATE; -- Update salary here COMMIT;END; ```
Performance Tuning
Performance tuning in PL/SQL involves optimizing SQL statements and PL/SQL code to reduce resource consumption and improve execution speed. This includes using proper indexes, avoiding unnecessary computations, and optimizing loop and conditional logic.
```sql BEGIN
FOR c_rec IN (SELECT * FROM large_table WHERE condition = 'X') LOOP -- Minimized logic for faster execution END LOOP;END; ```
Security Features
PL/SQL supports several security features, including invoker's rights and definer's rights, fine-grained access control, and secure application roles, to enhance the security of database applications.
```sql CREATE OR REPLACE PROCEDURE secure_proc AUTHID CURRENT_USER IS BEGIN
-- Procedure code that executes with the privileges of the current userEND; ```
PL/SQL remains a powerful tool for Oracle database developers, offering features that cater to a wide range of database programming needs. From basic data manipulation and procedural logic to advanced features like object types and XML/JSON processing, PL/SQL enables the development of robust, efficient, and secure database applications. ```
Oracle PL/SQL
In 35 paragraphs give code examples comparing and contrasting Oracle T-SQL, IBM PL/SQL, and SQL:2016 ISO/IEC 9075 “Information technology - Database languages - SQL”. Put a section heading for each paragraph. You MUST put double square brackets around each computer buzzword or jargon or technical words. Answer in MediaWiki syntax.
Oracle PL/SQL, T-SQL (used by Microsoft SQL Server), and the 2016 ISO/IEC 9075 standard represent different aspects of SQL and its procedural extensions used for database management and programming. While Oracle PL/SQL and T-SQL are proprietary extensions designed for their respective databases, SQL:2016 represents the international standard for SQL databases. This comparison will provide insights into their differences and similarities through specific code examples.
Overview of Oracle PL/SQL
Oracle PL/SQL is a comprehensive procedural extension of SQL designed for the Oracle Database. It integrates seamlessly with SQL, enabling developers to write complex database-centric programs that include logic directly inside the database.
```sql BEGIN
-- Example of PL/SQL block DBMS_OUTPUT.PUT_LINE('Hello from Oracle PL/SQL!');END; ```
Overview of T-SQL
T-SQL (Transact-SQL) is Microsoft SQL Server's extension of SQL. It includes proprietary procedural programming extensions, offering a rich set of commands for transaction control, error handling, and row processing.
```sql – Example of T-SQL code PRINT 'Hello from T-SQL!'; ```
Overview of SQL:2016
2016 ISO/IEC 9075, also known as SQL Standard, is the international standard for SQL databases. It defines the SQL language syntax and ensures interoperability across different database systems. SQL:2016 does not include procedural extensions akin to PL/SQL or T-SQL but focuses on structured query language itself.
```sql – Example of a SQL:2016 statement SELECT 'Hello from SQL:2016!' AS greeting; ```
Declaring Variables
In Oracle PL/SQL, variables are declared in the declaration section of a PL/SQL block.
```sql DECLARE
message VARCHAR2(100) := 'Hello from Oracle PL/SQL!';BEGIN
DBMS_OUTPUT.PUT_LINE(message);END; ```
In T-SQL, variables are declared using the DECLARE statement within batches or stored procedures.
```sql DECLARE @message VARCHAR(100) = 'Hello from T-SQL!'; PRINT @message; ```
SQL:2016 standard does not explicitly define variables for procedural tasks but supports parameters and local variables within routines.
Conditional Statements
Oracle PL/SQL supports IF-THEN-ELSE logic for executing code based on conditions.
```sql BEGIN
IF 1=1 THEN DBMS_OUTPUT.PUT_LINE('True in Oracle PL/SQL'); END IF;END; ```
T-SQL also supports IF-THEN-ELSE logic, with a slightly different syntax.
```sql IF 1=1
PRINT 'True in T-SQL';```
SQL:2016 specifies the CASE expression for conditional logic in queries, not procedural conditions.
```sql SELECT CASE WHEN 1=1 THEN 'True in SQL:2016' END AS Result; ```
Looping Constructs
Oracle PL/SQL provides LOOP, WHILE LOOP, and FOR LOOP constructs for iteration.
```sql BEGIN
FOR i IN 1..5 LOOP DBMS_OUTPUT.PUT_LINE('Loop ' ]] | [[]] | [[ i); END LOOP;END; ```
T-SQL offers WHILE loops for repetitive control flow.
```sql DECLARE @i INT = 1; WHILE @i ⇐ 5 BEGIN
PRINT 'Loop ' + CAST(@i AS VARCHAR); SET @i = @i + 1;END; ```
SQL:2016 does not include procedural loop constructs in its standard.
Error Handling
Oracle PL/SQL uses EXCEPTION blocks for error handling.
```sql BEGIN
-- Code that might raise an errorEXCEPTION
WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error in Oracle PL/SQL');END; ```
T-SQL uses TRY…CATCH blocks for error handling.
```sql BEGIN TRY
-- Code that might raise an errorEND TRY BEGIN CATCH
PRINT 'Error in T-SQL';END CATCH; ```
SQL:2016 defines standard SQLSTATE codes for error handling but not the procedural constructs like TRY…CATCH.
Cursors
Oracle PL/SQL uses cursors for processing rows returned by a SELECT statement.
```sql DECLARE
CURSOR c1 IS SELECT * FROM dual;BEGIN
FOR record IN c1 LOOP DBMS_OUTPUT.PUT_LINE('Cursor in Oracle PL/SQL'); END LOOP;END; ```
T-SQL also supports cursors for row-by-row processing.
```sql DECLARE cursor_name CURSOR FOR SELECT * FROM sys.objects; OPEN cursor_name; – Fetch and process rows CLOSE cursor_name; DEALLOCATE cursor_name; ```
SQL:2016 defines cursors for fetching rows from a result set but leaves the implementation details to the database systems.
Transactions
Oracle PL/SQL
allows for sophisticated transaction control using COMMIT and ROLLBACK within PL/SQL blocks.
```sql BEGIN
UPDATE my_table SET column_name = 'value'; COMMIT;END; ```
T-SQL provides similar transaction control mechanisms.
```sql BEGIN TRANSACTION; UPDATE my_table SET column_name = 'value'; COMMIT TRANSACTION; ```
SQL:2016 specifies the syntax for transaction control, ensuring consistency across different SQL databases.
Procedures and Functions
Oracle PL/SQL allows the creation of stored procedures and functions for encapsulating and reusing code.
```sql CREATE OR REPLACE PROCEDURE my_procedure IS BEGIN
DBMS_OUTPUT.PUT_LINE('Oracle PL/SQL Procedure');END; ```
T-SQL supports stored procedures and functions with a different syntax.
```sql CREATE PROCEDURE myProcedure AS BEGIN
PRINT 'T-SQL Procedure';END; ```
SQL:2016 standard describes the creation of routines (procedures and functions) to ensure interoperability.
Modular Code with Packages
Oracle PL/SQL supports packages, which are collections of related procedures, functions, and variables.
```sql CREATE OR REPLACE PACKAGE my_package IS
PROCEDURE my_procedure;END my_package; ```
T-SQL does not have an equivalent package feature but supports schemas for organizing database objects.
```sql CREATE SCHEMA my_schema; GO ```
SQL:2016 does not explicitly cover packages but supports schemas for object organization.
Dynamic SQL
Oracle PL/SQL supports dynamic SQL with the EXECUTE IMMEDIATE statement.
```sql BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE dynamic_table (id NUMBER)';END; ```
T-SQL uses the EXEC command for executing dynamic SQL.
```sql EXEC ('CREATE TABLE DynamicTable (ID INT)'); ```
SQL:2016 provides guidelines for using dynamic SQL to ensure cross-database compatibility.
Conclusion
While Oracle PL/SQL, T-SQL, and SQL:2016 cater to different database environments and have their unique features and syntax, they share the core goal of managing and manipulating data efficiently. Oracle PL/SQL and T-SQL extend the standard SQL capabilities with procedural features, error handling, and transaction control, tailored to their respective databases. SQL:2016 lays the foundational standard, ensuring a degree of consistency and interoperability among SQL-compliant databases. This comparison highlights the importance of understanding the specific capabilities and best practices of each language and standard when developing database solutions.
Oracle: Surveillance Valley - The Rise of the Military-Digital Complex - History of the Internet, Military Industrial Complex, Media Industrial Complex - The Media Machine, Big Tech Technocracy, Oracle DevOps - Oracle SRE, Oracle Cloud Native - Oracle and Kubernetes, Oracle Cloud - Oracle Data Centers, Oracle GitHub - Oracle Open Source (), Oracle Development Tools (), Oracle Programming Languages (Java), Oracle APIs, Oracle and Concurrent Parallel Programming (), Oracle and Functional Programming (), Oracle and Microservices, Oracle Security - Oracle Security Breaches, Oracle Research, Oracle Networking, Oracle Data Science - Oracle DataOps - Oracle Databases, Oracle Artificial Intelligence (Oracle ML - Oracle MLOps, Oracle DL, Oracle AR - Oracle VR), Oracle IoT, Oracle Products - Oracle Services (), Oracle Operating Systems (), Oracle Software (), Oracle Hardware - Oracle Devices (), Oracle Support (), Oracle Media (), Oracle Communication (), Oracle Concepts (), Oracle acronyms (), Oracle Founders (), Oracle People (), Oracle Outline, Oracle History, Oracle Timeline, Oracle Subsidiaries (), Oracle Privacy (), Oracle Censorship (), Oracle Criticism (), Oracle Bibliography, Oracle Courses, Oracle Certification (), Oracle Glossary, Oracle Topics, Oracle Blogs, Oracle Awesome List. (navbar_oracle - see also navbar_oracle_database, navbar_oracle_cloud)
Oracle Database: Oracle Database 19c, Oracle Database 18c, Oracle Database 12c Release 2, Oracle Database 12c Release 1, Oracle Database 11g Release 2, Oracle Database 11g Release 1, Oracle Database 10g, Oracle Database 9i, Oracle Database 8i, Oracle Database 7, Oracle Exadata Database Machine, Oracle Exadata Cloud at Customer, Oracle Autonomous Database, Oracle TimesTen In-Memory Database, Oracle Berkeley DB, Oracle MySQL Database Service, Oracle MySQL Enterprise Edition, Oracle MySQL Standard Edition, Oracle MySQL Classic Edition, Oracle MySQL Cluster CGE. (navbar_oracle_database - see also navbar_oracle_cloud, navbar_oracle, navbar_database)
Oracle Cloud: Oracle Cloud DevOps, Oracle Cloud Security, Oracle Cloud Pentesting, Oracle Cloud Glossary - Glossaire de Oracle Cloud - French, Oracle Cloud Topics, Awesome IBM Cloud. Oracle Cloud Infrastructure Compute, Oracle Cloud Infrastructure Block Volume, Oracle Cloud Infrastructure Object Storage, Oracle Cloud Infrastructure File Storage, Oracle Cloud Infrastructure Networking, Oracle Cloud Infrastructure Load Balancing, Oracle Cloud Infrastructure DNS, Oracle Cloud Infrastructure FastConnect, Oracle Cloud Infrastructure VPN Connect, Oracle Cloud Infrastructure NAT Gateway, Oracle Cloud Infrastructure Security Zones, Oracle Cloud Infrastructure WAF, Oracle Cloud Infrastructure Firewall, Oracle Cloud Infrastructure Identity and Access Management, Oracle Cloud Infrastructure Key Management, Oracle Cloud Infrastructure Vault, Oracle Cloud Infrastructure Monitoring, Oracle Cloud Infrastructure Notifications, Oracle Cloud Infrastructure Logging, Oracle Cloud Infrastructure Events, Oracle Cloud Infrastructure Resource Manager, Oracle Cloud Infrastructure Service Connector, Oracle Cloud Infrastructure Streams, Oracle Cloud Infrastructure Data Flow, Oracle Cloud Infrastructure Data Science, Oracle Cloud Infrastructure Data Catalog, Oracle Cloud Infrastructure Data Integration, Oracle Cloud Infrastructure Data Safe, Oracle Cloud Infrastructure MySQL Database Service, Oracle Cloud Infrastructure Autonomous Database, Oracle Cloud Infrastructure NoSQL Database, Oracle Cloud Infrastructure Blockchain Platform, Oracle Cloud Infrastructure Streaming, Oracle Cloud Infrastructure Analytics, Oracle Cloud Infrastructure AI, Oracle Cloud Infrastructure Data Catalog, Oracle Cloud Infrastructure Data Flow, Oracle Cloud Infrastructure Data Integration, Oracle Cloud Infrastructure Data Safe, Oracle Cloud Infrastructure Digital Assistant, Oracle Cloud Infrastructure Visual Builder, Oracle Cloud Infrastructure Functions, Oracle Cloud Infrastructure Container Engine for Kubernetes, Oracle Cloud Infrastructure Resource Manager, Oracle Cloud Infrastructure Registry, Oracle Cloud Infrastructure API Gateway, Oracle Cloud Infrastructure Streaming, Oracle Cloud Infrastructure Analytics, Oracle Cloud Infrastructure AI, Oracle Cloud Infrastructure Data Catalog, Oracle Cloud Infrastructure Data Flow, Oracle Cloud Infrastructure Data Integration, Oracle Cloud Infrastructure Data Safe, Oracle Cloud Infrastructure Email Delivery, Oracle Cloud Infrastructure Email Gateway, Oracle Cloud Infrastructure File Storage, Oracle Cloud Infrastructure Notifications, Oracle Cloud Infrastructure Object Storage, Oracle Cloud Infrastructure Logging, Oracle Cloud Infrastructure Monitoring, Oracle Cloud Infrastructure Events, Oracle Cloud Infrastructure Resource Manager, Oracle Cloud Infrastructure Service Connector, Oracle Cloud Infrastructure Streams, Oracle Cloud Infrastructure Data Flow, Oracle Cloud Infrastructure Data Integration, Oracle Cloud Infrastructure Data Safe, Oracle Cloud Infrastructure Mobile Hub, Oracle Cloud Infrastructure Functions, Oracle Cloud Infrastructure Container Engine for Kubernetes, Oracle Cloud Infrastructure Resource Manager, Oracle Cloud Infrastructure API Gateway, Oracle Cloud Infrastructure Registry, Oracle Cloud Infrastructure Streaming, Oracle Cloud Infrastructure Analytics, Oracle Cloud Infrastructure AI, Oracle Cloud Infrastructure Data Catalog, Oracle Cloud Infrastructure Data Flow, Oracle Cloud Infrastructure Data Integration, Oracle Cloud Infrastructure Data Safe, Oracle Cloud Infrastructure Mobile Hub, Oracle Cloud Infrastructure Functions, Oracle Cloud Infrastructure Container Engine for Kubernetes, Oracle Cloud Infrastructure Resource Manager, Oracle Cloud Infrastructure API Gateway, Oracle Cloud Infrastructure Registry, Oracle Cloud Infrastructure Streaming, Oracle Cloud Infrastructure Analytics, Oracle Cloud Infrastructure AI, Oracle Cloud Infrastructure Data Catalog, Oracle Cloud Infrastructure Data Flow, Oracle Cloud Infrastructure Data Integration, Oracle Cloud Infrastructure Data Safe. (navbar_oracle_cloud - see also see also navbar_oracle, navbar_oracle_cloud_devops, navbar_oracle_cloud_developer, navbar_oracle_cloud_security, navbar_oracle_cloud_kubernetes, navbar_oracle_cloud_native, navbar_oracle_cloud_microservices, navbar_oracle_cloud_databases, navbar_oracle_cloud_iac, navbar_azure, navbar_gcp, navbar_ibm_cloud, navbar_oracle_cloud)
Cloud Monk is Retired ( for now). Buddha with you. © 2025 and Beginningless Time - Present Moment - Three Times: The Buddhas or Fair Use. Disclaimers
SYI LU SENG E MU CHYWE YE. NAN. WEI LA YE. WEI LA YE. SA WA HE.