//Oracle types
create or replace type subType as object(
num number,
name varchar2(100)
);
create or replace type mainType as object(
num number,
sub subType
);
// Go code
import (
"database/sql"
"fmt"
go_ora "github.com/sijms/go-ora/v2"
)
type sub struct {
Num float64 `udt:"NUM"`
Name string `udt:"NAME"`
}
type mainS struct {
Num float64 `udt:"NUM"`
Sub sub `udt:"SUB"`
}
func main() {
db, err := sql.Open("oracle", "connection string")
err = go_ora.RegisterType(db, "subType", "", sub{})
err = go_ora.RegisterType(db, "mainType", "", mainS{})
//
var v_s sub
v_s.Num = 1
v_s.Name = `test`
//
var v_m mainS
v_m.Num = 5
v_m.Sub = v_s
//
_, err = db.Exec(`
declare
v_main mainType;
begin
v_main := :p_main;
end;`,
sql.Named(`p_main`, v_m),
)
fmt.Println(err)
}
Hi
//Oracle types create or replace type subType as object( num number, name varchar2(100) ); create or replace type mainType as object( num number, sub subType );
// Go code
// Output ORA-00600: internal error code, arguments: [kope2_readstr232], [1], [], [], [], [], [], [], [], [], [], []
Thanks