Canais iMasters

PostgreSQL + PHP

Lançado o Pl/PHP

Foi lançado o Pl/PHP, mais uma linguagem procedural para criação de funções no PostgreSQL. Mais um exemplo do grande potencial que o PostgreSQL. Já existe várias outras linguagens para a criação de funções, como o Pl/Java, Pl/Python, Pl/PgSQL e Pl/Perl dentre várias outras. As funções são criadas na qual os comandos seguem a sintaxe do PHP.

Suporta atualmente SPI (Server Programming Interface), tipos compostos, funções que retornem SETOF, triggers, funções Trusted e Untrusted.

Abaixo há exemplos da criação de funções em Pl/PHP extraídos do site www.postgresql.org:

CREATE OR REPLACE FUNCTION set_var(text) RETURNS text AS '
global $_SHARED;
$_SHARED[''first'']=$args[0];
return ''ok'';
' LANGUAGE plphp

CREATE OR REPLACE FUNCTION get_var() RETURNS text AS '
global $_SHARED;
return $_SHARED[''first''];
' LANGUAGE plphp;

SELECT set_var('hello plphp');
SELECT get_var(); //will return "hello plphp" in our example

Abaixo há um exemplo de uso de Pl/PHP com funções que retornem SETOF:

CREATE TYPE __testsetphp AS (f1 integer, f2 text, f3 text);

CREATE OR REPLACE FUNCTION php_set(integer) RETURNS SETOF __testsetphp AS '
$ret[0][0]=$args[0];
$ret[0][1]="hello";
$ret[0][2]="world";
$ret[1][0]=2*$args[0];
$ret[1][1]="hello";
$ret[1][2]="postgres";
$ret[2][0]=3*$args[0];
$ret[2][1]="hello";
$ret[2][2]="plphp";
return $ret;
' LANGUAGE 'plphp';

SELECT * FROM php_set(1);

Will return:
f1 | f2 | f3
----+-------+----------
1 | hello | world
2 | hello | postgres
3 | hello | plphp

Neste último exemplo é mostrado que pode-se criar funções PHP dentro da função que será armazenado no banco:

CREATE OR REPLACE FUNCTION insertIntoArray() RETURNS varchar AS '

function array_insert(&$array, $value, $pos)

{
    if (!is_array($array))
         return FALSE;
    $last = array_splice($array, $pos);
    array_push($array, $value);
    $array = array_merge($array, $last);
}

function array_2string($array)
{
    $vals=array_values($array);
    $keys=array_keys($array);
    $x=0;
    while($x<count($keys)) {
         if ($x!=0)
            {
                 $result.="|";
            }
           $result.=$keys[$x]."=".$vals[$x];
           $x++;
        }
     return $result;
}
$a = array("zero", "one", "two", "three", "four", "five", "six", "seven", "eight");
array_insert($a, "POOP", 4);
return array_2string($a);
' LANGUAGE 'plphp';

O Pl/PHP pode ser encontrado no site da Command Prompt, Inc., para mais informações clique aqui.


Qual a sua opinião?

Comentários considerados ofensivos serão moderados.

Parceiros

IBM
PagSeguro
Internet Innovation
Dialhost
HostNet
Tecla
KingHost
DotStore
Dinamize