Hi Nisarg,
it helps to have a runnable reproducer. Please post a link to a minimal
reproducer in the https://go.dev/play/ (the Go playgound) or a
github repo.
Best,
Jason
On Wednesday, January 14, 2026 at 7:35:24 PM UTC-3 Nisarg Desai wrote:
> Hi There Golang-nuts.
>
> I am seeking help for my go lang project.
>
> I am having an oracle server and in that there are many Db's Now I am
> createing a store procedure which has almost 20 parameters which are used
> multiple times in one single query.
>
> Now I checked GO does not support reuse of same parameters so if I have
> already used order_id as a parameter while passing query to be executed I
> can not use the order_id parameter anywhere else in the query.
>
> So I created a store procedure which would be easier but now in oracle
> while running the store procedure I am running it as follows
>
> var rows *sql.Rows
>
> _, err := r.db.QueryxContext(
> ctx,
> `BEGIN
> PSIGWAY.get_transactions(
> :1, :2, :3, :4, :5, :6, :7, :8, :9, :10,
> :11, :12, :13, :14, :15, :16, :17, :18,
> :19, :20
> );
> END;`,
> request.StoreID,
> request.DateFrom,
> request.DateTo,
> request.Status,
> request.Action,
> request.AuthCode,
> request.OrderID,
> request.UserId,
> request.CustomerIP,
> request.CardType,
> request.CardSpan,
> request.DateFilterType,
> request.AmountFilterType,
> request.Amount,
> request.BillingName,
> request.BillingPostalCode,
> request.BillingProvince,
> Requestpage,
> "GetTransactions",
> sql.Out{Dest: &rows}, // 🔥 THIS IS THE KEY
> )
> if err != nil {
> return response, err
> }
> defer rows.Close()
>
> for rows.Next() {
> var o models.OrderSummary
> err := rows.Scan(
> &o.IMID,
> &o.OrderID,
> &o.TrxID,
> &o.Amount,
> &o.Name,
> &o.Card,
> &o.UserId,
> &o.Date,
> &o.Action,
> &o.Result,
> &o.ReturnCode,
> &o.External_Reason,
> &o.IDEBITISSNAME,
> &o.IDEBITISSCONF,
> &o.ACQCONFCODE,
> )
> if err != nil {
> return response, err
> }
>
> orders = append(orders, o)
> }
>
> if err := rows.Err(); err != nil {
> return response, err
> }
>
> // Post-processing
> for i := range orders {
> transType := "IOP_TRANSACTIONS"
> if orders[i].TrxID > "2000000000000000000" {
> transType = "CC_TRANSACTIONS"
> }
>
> orders[i].ActionText = utils.GetActionText(orders[i].Action,
> transType)
> orders[i].ResultText = utils.GetResultText(orders[i].Result,
> transType)
> orders[i].ReturnCodeText = utils.GetReturnCodeText(
> orders[i].Result,
> orders[i].TrxID,
> orders[i].ReturnCode,
> orders[i].IDEBITISSNAME,
> orders[i].IDEBITISSCONF,
> orders[i].ACQCONFCODE,
> orders[i].External_Reason,
> )
> }
>
> response.TotalResults = len(orders)
> response.Orders = orders
>
>
> but it throws me an error reflect: call of reflect.Value.Type on zero
> Value
> /usr/local/go/src/reflect/value.go:2474 (0x4c034d)
> Value.abiTypeSlow: panic(&ValueError{"reflect.Value.Type",
> Invalid})
> /usr/local/go/src/reflect/value.go:2462 (0x4c021c)
> Value.typeSlow: return toRType(v.abiTypeSlow())
> /usr/local/go/src/reflect/value.go:2457 (0x6fc1fb)
> Value.Type: return v.typeSlow()
> /home/ndesai/go/pkg/mod/github.com/godror/[email protected]/stmt.go:3409
> <http://github.com/godror/[email protected]/stmt.go:3409> (0x6fc1ab)
> (*conn).getStructObjectType: rvt := rv.Type()
> /home/ndesai/go/pkg/mod/github.com/godror/[email protected]/stmt.go:1465
> <http://github.com/godror/[email protected]/stmt.go:1465> (0x6e9393)
> (*statement).bindVarTypeSwitch: if ot, err :=
> st.conn.getStructObjectType(ctx, value, ""); err != nil { Now it is because
> of the sq.out but not sure How to solve this issue and get it running I
> have spent almost 3 weeks on this please help me with this and help me
> resolve it Thank you.
>
>
>
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/golang-nuts/e2aba2b2-c790-490d-8e7b-0cf78020072en%40googlegroups.com.