
Install
$ composer require actimeo/pgproc
$ cat vendor/actimeo/pgproc/src/sql/pgprocedures.sql | psql -h host -U login -W dbname
$ cat vendor/actimeo/pgproc/src/plpgsql/all.sql | psql -h host -U login -W dbname
Usage
- Write some procedures in your database, for example:
$ cat vendor/actimeo/pgproc/tests/tests.sql | psql -h host -U login -W dbname
<?php
require 'config.inc.php';
require 'vendor/autoload.php';
use \actimeo\pgproc\PgProcedures;
$base = new PgProcedures ($pg_host, $pg_user, $pg_pass, $pg_database);
$ret = $base->pgtests->test_returns_integer ();
echo $ret."\n";
$ret = $base->pgtests->test_integer_array_arg(array(1, 2, 3));
print_r($ret);
$ret = $base->pgtests->test_returns_composite();
print_r($ret);
$ret = $base->pgtests->test_returns_setof_composite();
print_r($ret);
$ret = $base->pgtests->test_integer_array_arg(array(3, 1, 2),
PgProcedures::order('test_integer_array_arg', 'DESC'));
print_r($ret);
$ret = $base->pgtests->test_integer_array_arg(array(3, 1, 2),
PgProcedures::limit(2));
print_r($ret);
$ret = $base->pgtests->test_integer_array_arg(array(3, 1, 2),
PgProcedures::limit(2, 1));
print_r($ret);
$ret = $base->pgtests->test_integer_array_arg(array(3, 1, 2, 3, 1, 3),
PgProcedures::distinct());
print_r($ret);
$ret = $base->pgtests->test_integer_array_arg(array(3, 1, 2, 3, 1, 3),
PgProcedures::count());
echo $ret."\n";
$base->startTransaction ();
$base->commit ();
$base->rollback ();
$functionName = 'test_returns_incremented_integer';
$n = 41;
$ret = $base->pgtests->__call ($functionName, array($n));
echo $ret."\n";
$base->set_timestamp_return_format ('Y-m-d h:i:s A');
$ret = $base->pgtests->test_returns_timestamp();
echo $ret."\n";
$base->set_timestamp_return_format ('d/m/Y H:i:s');
$ret = $base->pgtests->test_returns_timestamp();
echo $ret."\n";
$base->set_date_return_format ('Y-m-d');
$ret = $base->pgtests->test_returns_date();
echo $ret."\n";
$base->set_date_return_format ('d/m/Y');
$ret = $base->pgtests->test_returns_date();
echo $ret."\n";
$base->set_time_return_format ('h:i:s A');
$ret = $base->pgtests->test_returns_time();
echo $ret."\n";
$base->set_time_return_format ('H:i:s');
$ret = $base->pgtests->test_returns_time();
echo $ret."\n";
$base->set_timestamp_arg_format ('%Y-%m-%d %H:%M:%S %p');
$base->set_date_arg_format ('%Y-%m-%d');
$base->set_time_arg_format ('%H:%M:%S %p');
$ret = $base->get_client_encoding ();
echo $ret."\n";
$base->set_client_encoding ('LATIN1');