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 prc_recebcobdsg('0','null','01-01-2021','27-01-2021','null'))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
我哪里错了?我不太了解拉雷维尔,但我相信有两个问题。 首先,
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不要忘记使用“绑定参数”,而不是硬编码常量,例如数据值。绑定对于安全性和可伸缩性很重要。