Laravel怎么执行sql sever的存储过程啊

sql语句,能执行成功

clipboard.png
但是用DB 调用则报错,说查询的结果不包含字段

clipboard.png

clipboard.png

阅读 4.9k
2 个回答

执行存储过程的语句:
$finance= DB::connection('sqlsrv')->select("exec xgx_finance_ledger ?,?,?",['J44022','2017-02-01','2017-09-19']);
但是做执行存储过程通常会遇到两个坑
坑1.写参数的数组,一定一定要用索引数组,不然会报错,不能是关联数组
坑2:在sql存储过程方法中,在储存过程开头 加上set nocount on 表示不返回计数行就是影响行数不反回。通常报的错误为如上。问题出在 PDO上爆出来的 所以查了SQLSRV_Help.chm文档 就是微软提供的dll的api 最后发现是因为 储存过程执行还会返回影响行数所以导致的问题 没有返回我需要的值 。

clipboard.png
set nocount on放的位置可以根据情况适当调整

新手上路,请多包涵

楼上补充一个:存储过程必须要有返回字段名,若返回计算结果则PDO会拿不到数据!!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题