# ----------------------------------------------------------------------------- # Copyright (c) 2023, 2024, Oracle and/or its affiliates. # # This software is dual-licensed to you under the Universal Permissive License # (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License # 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose # either license. # # If you elect to accept the software under the Apache License, Version 2.0, # the following applies: # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ----------------------------------------------------------------------------- # ----------------------------------------------------------------------------- # plsql_function_async.py # # An asynchronous version of plsql_function.py # # Demonstrates how to call a PL/SQL function and get its return value. # ----------------------------------------------------------------------------- import asyncio import oracledb import sample_env async def main(): connection = await oracledb.connect_async( user=sample_env.get_main_user(), password=sample_env.get_main_password(), dsn=sample_env.get_connect_string(), params=sample_env.get_connect_params(), ) with connection.cursor() as cursor: # The second parameter is the expected return type of the PL/SQL # function res = await cursor.callfunc("myfunc", int, ("abc", 2)) print(res) asyncio.run(main())