Pdo\Sqlite::createFunction
Registra uma função definida pelo usuário para uso em instruções SQL
&reftitle.description;
publicboolPdo\Sqlite::createFunctionstringfunction_namecallablecallbackintnum_args-1intflags0
Este método permite que a função PHP seja registrada no SQLite como uma
função definida pelo usuário, para que possa ser chamada em consultas SQL.
A função definida pode ser usada em qualquer consulta SQL que permita chamadas de função,
por exemplo SELECT, UPDATE ou gatilhos.
Usando este método é possível substituir funções SQL nativas.
&reftitle.parameters;
function_name
O nome da função usada nas instruções SQL.
callback
Função de retorno de chamada para lidar com a função SQL definida.
As funções de retorno de chamada devem retornar um tipo compreendido pelo SQLite (ou seja,
tipo escalar).
Esta função precisa ser definida como:
mixedcallbackmixedvaluemixedvaluesvalue
O primeiro argumento passado para a função SQL.
values
Argumentos adicionais passados para a função SQL.
num_args
O número de argumentos que a função SQL utiliza.
Se este parâmetro for -1,
a função SQL poderá receber qualquer número de argumentos.
flags
Uma máscara de bits de opções.
Atualmente, apenas Pdo\Sqlite::DETERMINISTIC é suportada,
o que especifica que a função sempre retorna o mesmo resultado dadas
as mesmas entradas em uma única instrução SQL.
&reftitle.returnvalues;
&return.success;
&reftitle.examples;
Exemplo de Pdo\Sqlite::createFunction
Neste exemplo, temos uma função que calcula a soma SHA256 de uma
string e depois a inverte. Quando a instrução SQL é executada, ela
retorna o valor do nome do arquivo transformado pela nossa função.
Os dados retornados em $rows contêm o resultado processado.
A beleza desta técnica é que não há necessidade de processar
o resultado usando um laço &foreach; após a consulta.
createFunction('sha256rev', 'sha256_and_reverse', 1);
$rows = $db->query('SELECT sha256rev(filename) FROM files')->fetchAll();
?>
]]>
&reftitle.seealso;
Pdo\Sqlite::createAggregatePdo\Sqlite::createCollationsqlite_create_functionsqlite_create_aggregate