Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从Laravel执行Oracle存储过程_Php_Laravel_Oracle - Fatal编程技术网

Php 如何从Laravel执行Oracle存储过程

Php 如何从Laravel执行Oracle存储过程,php,laravel,oracle,Php,Laravel,Oracle,当我尝试运行命令时: $pdo=DB::connection($group)->选择(“exec prc_recebcobdsg('0','null','01-01-2021','27-01-2021','null') 我的Laravel页面返回: 错误代码:900 错误消息:ORA-00900:无效的SQL语句 职位:0 声明:exec prc_recebcobdsg('0','null','01-01-2021','27-01-2021','null')) 绑定:[] (SQL:exec p

当我尝试运行命令时:

$pdo=DB::connection($group)->选择(“exec prc_recebcobdsg('0','null','01-01-2021','27-01-2021','null')

我的Laravel页面返回: 错误代码:900 错误消息:ORA-00900:无效的SQL语句 职位:0 声明:exec prc_recebcobdsg('0','null','01-01-2021','27-01-2021','null')) 绑定:[] (SQL:exec prc_recebcobdsg('0','null','01-01-2021','27-01-2021','null'))


我哪里错了?

我不太了解拉雷维尔,但我相信有两个问题。 首先,
exec
实际上不是一个Oracle语句,它只是sqlplus、sqldeveloper和其他客户机中可用的一个速记。通常需要将过程调用封装在开始/结束块中。 第二个问题是,存储过程的执行不是真正的选择,因此不能使用
select
连接方法。我相信您可以使用
exec
方法。 像这样的方法应该会奏效:

DB::connection($group)->getPdo()->exec("begin prc_recebcobdsg('0', 'null','01-01-2021', '27-01-2021', 'null'); end;");
@gustavo不要忘记使用“绑定参数”,而不是硬编码常量,例如数据值。绑定对于安全性和可伸缩性很重要。