1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-26 08:22:08 +01:00
Files
archived-doc-es/reference/sqlite/functions/sqlite-create-function.xml
Javier Eguiluz 85ce29e1ca Añadido el archivo a la traduccion
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@189871 c90b9560-bf6c-de11-be94-00142212c4b1
2005-07-04 11:39:41 +00:00

208 lines
7.0 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.15 Maintainer: javi Status: ready -->
<refentry id="function.sqlite-create-function">
<refnamediv>
<refname>sqlite_create_function</refname>
<refname>SQLiteDatabase->createFunction</refname>
<refpurpose>
Registra una FDU (funci&oacute;n definida por el usuario) normal para su uso en sentencias SQL
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>void</type><methodname>sqlite_create_function</methodname>
<methodparam><type>resource</type><parameter>manejador_bd</parameter></methodparam>
<methodparam><type>string</type><parameter>nombre_funcion</parameter></methodparam>
<methodparam><type>callback</type><parameter>callback</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>numero_argumentos</parameter></methodparam>
</methodsynopsis>
<para>M&eacute;todo que sigue el estilo orientado a objetos:</para>
<classsynopsis>
<ooclass><classname>SQLiteDatabase</classname></ooclass>
<methodsynopsis>
<type>void</type><methodname>createFunction</methodname>
<methodparam><type>string</type><parameter>nombre_funcion</parameter></methodparam>
<methodparam><type>callback</type><parameter>callback</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>numero_argumentos</parameter></methodparam>
</methodsynopsis>
</classsynopsis>
<para>
<function>sqlite_create_function</function> permite registrar una funci&oacute;n PHP
para que SQLite la emplee como <acronym>FDU</acronym> (funci&oacute;n definida por el usuario).
De esta forma, la funci&oacute;n se puede llamar desde las sentencias SQL.
</para>
<para>
La funci&oacute;n FDU se puede utilizar en cualquier sentencia que pueda invocar funciones,
como SELECT y UPDATE, adem&aacute;s de en triggers.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>manejador_bd</parameter></term>
<listitem>
<para>
El recurso que identifica la base de datos SQLite (y que es el que
devuelve la funci&oacute;n <function>sqlite_open</function>).
Este par&aacute;metro no se requiere cuando se emplea el m&eacute;todo orientado
a objetos.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>nombre_funcion</parameter></term>
<listitem>
<para>
El nombre de la funci&oacute;n a utilizar en las sentencias SQL.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>callback</parameter></term>
<listitem>
<para>
Funci&oacute;n de callback que se encarga de manejar la funci&oacute;n SQL.
</para>
<note>
<simpara>
Las funciones de callback deben devolver un tipo de datos entendido por SQLite (esto es,
<link linkend="language.types.intro">tipo escalar</link>).
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>numero_argumentos</parameter></term>
<listitem>
<para>
Valor destinado al parseador de SQLite si la funci&oacute;n de callback
acepta un n&uacute;mero predeterminado de argumentos.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
&sqlite.param-compat;
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Ejemplo de <function>sqlite_create_function</function></title>
<programlisting role="php">
<![CDATA[
<?php
function md5_invertida($cadena)
{
return strrev(md5($cadena));
}
if ($manejador_bd = sqlite_open('mysqlitedb', 0666, $error_sqlite)) {
sqlite_create_function($manejador_bd, 'md5inv', 'md5_invertida', 1);
$consulta = 'SELECT md5inv(nombre_archivo) FROM archivos';
$filas = sqlite_array_query($manejador_bd, $consulta);
} else {
echo 'Error al abriri a base de datos de SQLite: ' . $error_sqlite;
exit;
}
?>
]]>
</programlisting>
</example>
</para>
<para>
La funci&oacute;n del ejemplo calcula el valor del resumen md5 de una cadena y
lo invierte antes de devolverlo. Cuando se ejecuta la sentencia SQL, devuelve el
valor del nombre de archivo devuelto por esta funci&oacute;n. Los datos devueltos
en la variable <parameter>$filas</parameter> contienen los resultados procesados.
</para>
<para>
La gran ventaja de esta t&eacute;cnica es que no se tienen que procesar los resultados
mediante un bucle de tipo foreach() una vez obtenidos los resultados.
</para>
<para>
PHP registra una funci&oacute;n especial llamada <literal>php</literal> cuando la base de datos
se abre por primera vez. La funci&oacute;n php se puede emplear para llamar a cualquier funci&oacute;n
PHP sin necesidad de tener que registrarla previamente.
</para>
<para>
<example>
<title>Ejemplo de uso de una funci&oacute;n PHP</title>
<programlisting role="php">
<![CDATA[
<?php
$filas = sqlite_array_query($manejador_bd, "SELECT php('md5', nombre_archivo) from archivos");
?>
]]>
</programlisting>
<para>
El ejemplo llama a la funci&oacute;n <function>md5</function> de PHP para cada
columna llamada <literal>nombre_archivo</literal> de la base de datos y devuelve
el resultado en la variable <parameter>$filas</parameter>
</para>
</example>
</para>
<note>
<para>
PHP no realiza el proceso de codificaci&oacute;n/decodificaci&oacute;n de datos binarios
de forma autom&aacute;tica, ya que esto podr&iacute;a penalizar seriamente el rendimiento de las aplicaciones.
Por tanto, se debe codificar/decodificar manualmente los par&aacute;metros y valores devueltos por estas
funciones. Para m&aacute;s detalles, se puede consultar la documentaci&oacute;n relativa a las funciones
<function>sqlite_udf_encode_binary</function> y <function>sqlite_udf_decode_binary</function>.
</para>
</note>
<tip>
<para>
No se recomienda que las propias funciones FDU se encarguen del procesamiento
de los datos binarios, a no ser que el rendimiento de la aplicaci&oacute;n no
sea un elemento determinante.
</para>
</tip>
<tip>
<para>
Se pueden emplear las funciones <function>sqlite_create_function</function> y
<function>sqlite_create_aggregate</function> para sobrecargar las funciones
SQL nativas de SQLite.
</para>
</tip>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>sqlite_create_aggregate</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->