Stored Procedure (Query Builder 18)
The data access layer supports stored procedure calls. To call database stored procedures, use the following method:
$resultSet = Db::query('call procedure_name'); foreach ($resultSet as $result) { }
The system will automatically determine whether the current query is a stored procedure call, but you can use the procedure method. Explicitly specify the current query as a stored procedure query to improve query efficiency.
$resultSet = Db::procedure(true) ->query('call procedure_name');
The stored procedure returns a data set. If your stored procedure does not need to return any data, you can also use the execute method:
Db::execute('call procedure_name');
The stored procedure can support input and output parameters. , and perform parameter binding operations.
$resultSet = Db::query('call procedure_name(:in_param1,:in_param2,:out_param)', [ 'in_param1' => $param1, 'in_param2' => [$param2, PDO::PARAM_INT], 'out_param' => [$outParam, PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 4000], ]);
The binding of output parameters must additionally use PDO::PARAM_INPUT_OUTPUT, and can share a parameter with the input parameter.
No matter what operations are done inside the stored procedure, each stored procedure call is only regarded as a query.