| 1422 | // |
| 1423 | |
| 1424 | static void gen_dyn_execute( const act* action, int column) |
| 1425 | { |
| 1426 | gpre_req* request; |
| 1427 | gpre_req req_const; |
| 1428 | |
| 1429 | const dyn* statement = (dyn*) action->act_object; |
| 1430 | const TEXT* transaction; |
| 1431 | if (statement->dyn_trans) |
| 1432 | { |
| 1433 | transaction = statement->dyn_trans; |
| 1434 | request = &req_const; |
| 1435 | request->req_trans = transaction; |
| 1436 | } |
| 1437 | else |
| 1438 | { |
| 1439 | transaction = "gds__trans"; |
| 1440 | request = NULL; |
| 1441 | } |
| 1442 | |
| 1443 | if (gpreGlob.sw_auto) |
| 1444 | { |
| 1445 | printa(column, "if (%s = nil) then", transaction); |
| 1446 | column += INDENT; |
| 1447 | t_start_auto(action, request, status_vector(action), column + INDENT); |
| 1448 | column -= INDENT; |
| 1449 | } |
| 1450 | |
| 1451 | TEXT s[MAX_CURSOR_SIZE]; |
| 1452 | make_name(s, statement->dyn_cursor_name); |
| 1453 | |
| 1454 | gpre_nod* var_list; |
| 1455 | if (var_list = statement->dyn_using) |
| 1456 | { |
| 1457 | printa(column, "gds__sqlda.sqln = %s;", gpreGlob.sw_dyn_using); |
| 1458 | printa(column, "gds__sqlda.sqld = %s;", gpreGlob.sw_dyn_using); |
| 1459 | for (int i = 0; i < var_list->nod_count; i++) |
| 1460 | asgn_sqlda_from(reinterpret_cast<ref*>(var_list->nod_arg[i]), i, s, column); |
| 1461 | } |
| 1462 | |
| 1463 | printa(column, |
| 1464 | statement->dyn_sqlda2 ? |
| 1465 | "isc_embed_dsql_execute2 (gds__status, %s, %s, %d, %s %s, %s %s);" : |
| 1466 | "isc_embed_dsql_execute (gds__status, %s, %s, %d, %s %s);", |
| 1467 | transaction, make_name(s, statement->dyn_statement_name), |
| 1468 | gpreGlob.sw_sql_dialect, REF_PAR, |
| 1469 | statement->dyn_sqlda ? statement->dyn_sqlda : "gds__null^", |
| 1470 | REF_PAR, |
| 1471 | statement->dyn_sqlda2 ? statement->dyn_sqlda2 : "gds__null^"); |
| 1472 | set_sqlcode(action, column); |
| 1473 | } |
| 1474 | |
| 1475 | |
| 1476 | //____________________________________________________________ |
no test coverage detected