Rust-oracle: calling stored procedures with UDT parameters

Hi!

I wonder if it is possible to call an oracle stored procedure that has both in and out UDT (user-defined type) parameters? Here's the example I've been working on:

I have 5 structs corresponding to 5 UDTs in my oracle db:

struct ASO_BOOKABLE{
    aso_id: String,
    forg_types: FORGTYPE,
}

struct FORGTYPE{
    values: Vec<i8>,
}

struct BOOKABLETYPE{
    bookables: BOOKABLETABTYPE,
    STATUS: String, 
}

struct BOOKABLETABTYPE{
    values: Vec<BOOKABLE>,
}

struct BOOKABLE{
    ifi_id: String,
    head_id: String,
    forgtet_id: String,
}

As you can see, there is a lot of nestling of UDTs and even nested tables. I want to call my stored procedure that takes an ASO_BOOKABLE object as IN parameter and has an OUT parameter of BOOKABLETYPE.

My hunch is that I should use something like this:

let rows = connection.query_as(
            "CALL myStoredProcedure($1, NULL)",
            &[&ASO_BOOKABLE as &(dyn ToSql)],
        )?;

I'm not sure if this is the right way and I also have a bit of a difficult time writing the fromSql and toSql trait implementations for my structs. Can someone point me in the right direction please?