Oracle过程执行';t执行来自PHP的调用


Oracle procedure does't executes calling from PHP

我在从PhP执行Oracle过程时遇到问题。事实上,我正在使用条令来执行它。

有趣的是,除了过程之外,任何其他查询都可以执行/获取。

下面,你可以找到我设法使用的代码,这个Select工作得很好:

$connection = $this->getApplication()->getDataSourceManager()->getEntityConnection();
$stmt = $connection->prepare("SELECT SYSDATE FROM DUAL"); //or any other select works nice
$stmt->execute();

然而,任何程序都不起作用,这就是其中之一:

$connection = $this->getApplication()->getDataSourceManager()->getEntityConnection();
$stmt = $connection->prepare("call prc_nutr_values('$cdfil', '$cdserice', '001', '0000000036', 'S', '$selectdt', '$selectdt')");
$stmt->execute();

上面的过程不会对数据库进行任何更改。这不是他的程序

发现错误!

主要的问题是PhP没有抛出任何错误(我不知道为什么。然而,我以不同的方式进行了交易,创建了一个干净的新连接,它抛出了错误,如下所示:

$entitiesPath = realpath(__DIR__."/../src/");
        $isDevMode = true;
        $entity_metadata_config = 'Doctrine'ORM'Tools'Setup::createAnnotationMetadataConfiguration(array($entitiesPath), $isDevMode);
        $connection_params = array(
            'driver'    => 'oci8',
            'user'      => 'user',
            'password'  => 'pwd',
            'host'      => 'IP',
            'port'      => 'port',
            'dbname'    => 'ORCL',
        );
        $entity_manager = 'Doctrine'ORM'EntityManager::create($connection_params, $entity_metadata_config);
        $conn=$entity_manager->getConnection();
        $sql ="CALL FUNCTION_NAME('$param1', '$param2', '$param3', '$param4', '$param5', $param6, $param7)";
        $outputMeta = $conn->exec($sql);

通过这种方式连接,我可以收到详细的错误:它是$param6和$param7(非格式化日期)

为了解决这个问题。。。我只是将$param6和$param7替换为TO_DATE("$param6","DATE-FORMAT")和TO_DATE

其中"DATE-FORMAT"是使用的日期格式("MM/DD/YYYY"或其他使用的日期形式)