12.7.2.9 pyqScriptCreate Procedure (Autonomous Database)
This topic describes the pyqScriptCreate procedure in
        Oracle Autonomous Database. Use the pyqScriptCreate procedure to create a
        user-defined Python function and add it to the OML4Py script
        repository.
               
Syntax
sys.pyqScriptCreate (
    V_NAME          VARCHAR2    IN
    V_SCRIPT        CLOB        IN
    V_GLOBAL        BOOLEAN     IN     DEFAULT
    V_OVERWRITE     BOOLEAN     IN     DEFAULT)| Parameter | Description | 
|---|---|
| V_NAME | A name for the user-defined Python function in the OML4Py script repository. | 
| V_SCRIPT | The definition of the Python function. | 
| V_GLOBAL | TRUEspecifies that the
                                user-defined Python function is public;FALSEspecifies that the user-defined Python function is private. | 
| V_OVERWRITE | If the script repository already has a user-defined
                                Python function with the same name as V_NAME, then TRUEreplaces the
                                content of that user-defined Python function with V_SCRIPT andFALSEdoes
                                not replace it. | 
Example 12-37 Using the pyqScriptCreate Procedure
This example creates a private user-defined Python function named
                    pyqFun2 in the OML4Py script
                repository.
                  
BEGIN
  sys.pyqScriptCreate('pyqFun2',
    'def return_frame():
       import numpy as np
       import pickle
       z = np.array([y for y in zip([str(x)+"demo" for x in range(10)],
       [float(x)/10 for x in range(10)],
       [x for x in range(10)],
       [bool(x%2) for x in range(10)],
       [pickle.dumps(x) for x in range(10)],
       ["test"+str(x**2) for x in range(10)])],
       dtype=[("a", "U10"), ("b", "f8"), ("c", "i4"), ("d", "?"), 
       ("e", "S20"), ("f", "O")])
       return z');
END;
/This example creates a global user-defined Python function named
                    pyqFun2 in the script repository and overwrites any existing
                user-defined Python function of the same name.
                  
BEGIN
  sys.pyqScriptCreate('pyqFun2',
    'def return_frame():
       import numpy as np
       import pickle
       z = np.array([y for y in zip([str(x)+"demo" for x in range(10)],
       [float(x)/10 for x in range(10)],
       [x for x in range(10)],
       [bool(x%2) for x in range(10)],
       [pickle.dumps(x) for x in range(10)],
       ["test"+str(x**2) for x in range(10)])],
       dtype=[("a", "U10"), ("b", "f8"), ("c", "i4"), ("d", "?"), 
       ("e", "S20"), ("f", "O")])
       return z',
       TRUE,  -- Make the user-defined Python function global.
       TRUE); -- Overwrite any global user-defined Python function 
              -- with the same name.
END;
/This example creates a private user-defined Python function named
                    create_iris_table in the script repository.
                  
BEGIN
  sys.pyqScriptCreate('create_iris_table',
    'def create_iris_table():
       from sklearn.datasets import load_iris
       import pandas as pd
       iris = load_iris()
       x = pd.DataFrame(iris.data, columns = ["Sepal_Length",\
                        "Sepal_Width","Petal_Length","Petal_Width"])
       y = pd.DataFrame(list(map(lambda x: {0:"setosa", 1: "versicolor",\
                                 2: "virginica"}[x], iris.target)),\
                        columns = ["Species"])
       return pd.concat([y, x], axis=1)');
END;
/Display the user-defined Python functions owned by the current user.
SELECT * from USER_PYQ_SCRIPTS;
NAME               SCRIPT
-----------------  ---------------------------------------------------------------------
create_iris_table  def create_iris_table():       from sklearn.datasets import load_iris ...
pyqFun2            def return_frame():       import numpy as np       import pickle      ...Display the user-defined Python functions available to the current user.
SELECT * from ALL_PYQ_SCRIPTS;
OWNER     NAME               SCRIPT
--------   -----------------  --------------------------------------------------------------------
OML_USER   create_iris_table  "def create_iris_table():  from sklearn.datasets import load_iris ...
OML_USER   pyqFun2            "def return_frame():  import numpy as np       import pickle      ...
PYQSYS     pyqFun2            "def return_frame():  import numpy as np       import pickle      ...