This commit is contained in:
2023-01-09 15:59:53 +01:00
parent 6dcd7031bb
commit cee54a1946
7 changed files with 37 additions and 12 deletions

View File

@@ -419,9 +419,11 @@ class MySQL extends SQL {
$returns = $procedure->getReturns();
$paramDefs = [];
foreach ($procedure->getParameters() as $param) {
if ($param instanceof Column) {
$paramDefs[] = $this->getParameterDefinition($param);
foreach ($procedure->getParameters() as $parameter) {
if ($parameter instanceof Column) {
$paramDefs[] = $this->getParameterDefinition($parameter);
} else if ($parameter instanceof CurrentTable) {
$paramDefs[] = $this->getParameterDefinition($parameter->toColumn());
} else {
$this->lastError = $this->logger->error("PROCEDURE parameter type " . gettype($returns) . " is not implemented yet");
return null;

View File

@@ -4,6 +4,7 @@
namespace Core\Driver\SQL\Query;
use Core\Driver\SQL\Column\Column;
use Core\Driver\SQL\Expression\Expression;
use Core\Driver\SQL\SQL;
class CreateProcedure extends Query {
@@ -21,7 +22,7 @@ class CreateProcedure extends Query {
$this->returns = NULL;
}
public function param(Column $parameter): CreateProcedure {
public function param(Expression $parameter): CreateProcedure {
$this->parameters[] = $parameter;
return $this;
}

View File

@@ -2,10 +2,13 @@
namespace Core\Driver\SQL\Type;
use Core\Driver\SQL\Column\Column;
use Core\Driver\SQL\Column\StringColumn;
use Core\Driver\SQL\Expression\Expression;
use Core\Driver\SQL\MySQL;
use Core\Driver\SQL\PostgreSQL;
use Core\Driver\SQL\SQL;
use Exception;
class CurrentTable extends Expression {
@@ -14,11 +17,15 @@ class CurrentTable extends Expression {
function getExpression(SQL $sql, array &$params): string {
if ($sql instanceof MySQL) {
// CURRENT_TABLE
return $sql->columnName("CURRENT_TABLE");
} else if ($sql instanceof PostgreSQL) {
return "TG_TABLE_NAME";
} else {
throw new Exception("CurrentTable Not implemented for driver type: " . get_class($sql));
}
}
public function toColumn(): Column {
return new StringColumn("CURRENT_TABLE");
}
}