Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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
Sql server 从Laravel调用SQL Server SP在Ubuntu上返回空_Sql Server_Laravel_Ubuntu_Stored Procedures - Fatal编程技术网

Sql server 从Laravel调用SQL Server SP在Ubuntu上返回空

Sql server 从Laravel调用SQL Server SP在Ubuntu上返回空,sql-server,laravel,ubuntu,stored-procedures,Sql Server,Laravel,Ubuntu,Stored Procedures,我正在从Laravel5.8调用SQLServer2005存储过程。如果在windows(10)上运行,则返回值;如果在ubuntu(18.04)上运行,则返回空数组 SQLSVR 2005上的我的SP USE [PROHMS_DEV]; GO /****** Object: StoredProcedure [dbo].[splbrpt_Cetak_Hasil_MCU_new] Script Date: 08/09/2020 17.56.13 ******/ SET ANSI_NUL

我正在从Laravel5.8调用SQLServer2005存储过程。如果在windows(10)上运行,则返回值;如果在ubuntu(18.04)上运行,则返回空数组

SQLSVR 2005上的我的SP

USE [PROHMS_DEV];
GO

/****** Object:  StoredProcedure [dbo].[splbrpt_Cetak_Hasil_MCU_new]    Script Date: 08/09/2020 17.56.13 ******/

SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
ALTER PROCEDURE [dbo].[splbrpt_Cetak_Hasil_MCU_new] @nolab   CHAR(15), 
                                                    @cetakan CHAR(2), 
                                                    @cetak   TEXT
AS
     IF @cetakan = '03'
         BEGIN
             SELECT hd.noreg, 
                    reg.norm, 
                    reg.TglTrans AS tgldaftar, 
                    reg.JamTrans AS jamdaftar, 
                    reg.TglTrans AS tglselesai, 
                    reg.JamTrans AS jamselesai, 
                    reg.umurtahun, 
                    reg.umurbulan, 
                    reg.umurhari, 
                    ks.nmkduser AS pasienseks, 
                    ISNULL(pk.nmkduser, '') AS PekerjaanPasien, 
                    hd.kddokter, 
                    m.nama AS namadokter, 
                    'Pasien Medical Check Up' AS jenispasien, 
                    hd.NoBukti AS nolab, 
                    hd.NoLabLIS AS NoLabLIS, 
                    RTRIM(reg.nama) + ' ' + RTRIM(reg.marga) AS namapasien, 
                    s.kdtest AS kdtestawal, 
                    tsawal.nmtest AS nmtestawal, 
                    s.kdtestakhir AS kdtest, 
                    RTRIM(tsakhir.nmtest) AS nmtest, 
                    s.kdfraction, 
                    f.nmfraction, 
                    ISNULL(su.nmkduser, '') AS UnitMtx, 
                    ISNULL(su2.nmkduser, '') AS UnitMtxInt, 
                    mf.nnormal AS nnormalstd, 
                    mf.nnormalint AS nnormalint, 
                    h.btsmin, 
                    h.btsmax, 
                    h.nilaistd, 
                    h.NilaiStd AS NilaiStdInt, 
                    h.unit, 
                    h.updater, 
                    h.tglupdate, 
                    h.chasilLIS AS cHasil, --DIganti Untuk Baca Cetak Hasil LIS (Hendrik)
                    0 AS nHasil, 
                    0 AS nhasilint,
                    -- h.unit, h.updater, h.tglupdate, h.chasil,   
                    -- h.nhasil, (h.nhasil * mf.KonversiSatuan) as nhasilint,  
                    h.umurhr, 
                    h.umurmax, 
                    h.satumur, 
                    h.nsatumur, 
                    ISNULL(gr.nmgroup, '') AS nmgroup, 
                    ISNULL(kl.nmkel, '') AS nmkel, 
                    gr.urutan, 
                    kl.Urutan AS UrutanKel, 
                    s.nmketerangan, 
                    s.kdketerangan, 
                    dp.nama, 
                    ISNULL(kf.nmkduser, '') AS kelfraction, 
                    'MCU' AS asal, 
                    'MCU' AS poliruang, 
                    hd.CatatanLB AS catatan, 
                    'Medical Check Up' AS nmkelas, 
             (
                 SELECT nilai
                 FROM setvar
                 WHERE app = 'LB_'
                       AND kode = 'dok1'
             ) AS doklab1, 
             (
                 SELECT nilai
                 FROM setvar
                 WHERE app = 'LB_'
                       AND kode = 'dok2'
             ) AS doklab2, 
             (
                 SELECT nilai
                 FROM setvar
                 WHERE app = 'LB_'
                       AND kode = 'penanggungjawab'
             ) AS pnanggungjwb, 
                    RTRIM(reg.Jalan) + ' ' + RTRIM(reg.Gang) AS AlamatPasien, 
                    ISNULL(mf.KonversiSatuan, 0) AS KonversiSatuan,

                    -- untuk hasil laboratorium agar dapat bertingkat  
                    dbo.fGetLevelHasilLB(s.KdKeterangan) AS LevelHasil, 
                    RTRIM(LEFT(CAST(s.KdKeterangan AS VARCHAR(500)), LEN(RTRIM(CAST(s.KdKeterangan AS VARCHAR(500)))) - LEN(RTRIM(s.KdFraction)))) AS KdHeader,

             -- agar bisa sort berdasarkan nomor urut yang ada di Matrix Test - Fraction  
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 2, 'Header') AS HeaderLv02, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 3, 'Header') AS HeaderLv03, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 4, 'Header') AS HeaderLv04, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 5, 'Header') AS HeaderLv05, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 6, 'Header') AS HeaderLv06, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 7, 'Header') AS HeaderLv07, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 8, 'Header') AS HeaderLv08, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 9, 'Header') AS HeaderLv09, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 10, 'Header') AS HeaderLv10, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 2, 'Header_Name') AS HeaderNameLv02, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 3, 'Header_Name') AS HeaderNameLv03, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 4, 'Header_Name') AS HeaderNameLv04, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 5, 'Header_Name') AS HeaderNameLv05, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 6, 'Header_Name') AS HeaderNameLv06, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 7, 'Header_Name') AS HeaderNameLv07, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 8, 'Header_Name') AS HeaderNameLv08, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 9, 'Header_Name') AS HeaderNameLv09, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 10, 'Header_Name') AS HeaderNameLv10, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 2, 'NoUrut') AS NoUrutLv02, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 3, 'NoUrut') AS NoUrutLv03, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 4, 'NoUrut') AS NoUrutLv04, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 5, 'NoUrut') AS NoUrutLv05, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 6, 'NoUrut') AS NoUrutLv06, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 7, 'NoUrut') AS NoUrutLv07, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 8, 'NoUrut') AS NoUrutLv08, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 9, 'NoUrut') AS NoUrutLv09, 
                    dbo.fGetNoUrutHasilLB(s.KdKeterangan, 10, 'NoUrut') AS NoUrutLv10, 
                    h.metode
             FROM mcu_HdTransaksi hd
                  INNER JOIN mcu_reg reg ON reg.noreg = hd.noreg
                  INNER JOIN medis m ON m.kode = hd.kddokter
                  INNER JOIN
             (
                 SELECT kduser, 
                        nmkduser
                 FROM stdfielddt
                 WHERE kdfield = 'kdseks'
             ) ks ON reg.kdseks = ks.kduser
                  LEFT JOIN
             (
                 SELECT kduser, 
                        nmkduser
                 FROM stdfielddt
                 WHERE kdfield = 'pekerjaan'
             ) pk ON pk.kduser = reg.kdpekerjaan
                  INNER JOIN lb_strukturmcu s ON s.nolab = hd.nobukti
                  INNER JOIN lb_test tsawal ON tsawal.kdtest = s.kdtest
                  INNER JOIN lb_test tsakhir ON tsakhir.kdtest = s.kdtestakhir
                  INNER JOIN lb_fraction f ON f.kdfraction = s.kdfraction
                  INNER JOIN lb_hasilmcu h ON h.nobukti = s.nolab
                                              AND h.kdfraction = s.kdfraction
                                              AND s.kdtestakhir = h.kdtest
                  LEFT JOIN lb_mtxtestfr mf ON mf.kdfraction = h.kdfraction
                                               AND mf.kdtest = s.kdtestakhir
                  LEFT JOIN
             (
                 SELECT kduser, 
                        nmkduser
                 FROM stdfielddt
                 WHERE kdfield = 'lb_unit'
             ) su ON su.kduser = mf.unit
                  LEFT JOIN
             (
                 SELECT kduser, 
                        nmkduser
                 FROM stdfielddt
                 WHERE kdfield = 'lb_unit'
             ) su2 ON su2.kduser = mf.unitint
                  LEFT JOIN
             (
                 SELECT kduser, 
                        nmkduser
                 FROM stdfielddt
                 WHERE kdfield = 'lb_klfr'
             ) kf ON kf.kduser = f.deskripsi
                  LEFT JOIN lb_group gr ON gr.kdgroup = tsakhir.kdgroup
                  LEFT JOIN lb_kel kl ON kl.kdkel = tsakhir.kdkel
                                         AND tsakhir.kdgroup = kl.kdgroup
                  CROSS JOIN
             (
                 SELECT nama, 
                        nilai
                 FROM setvar
                 WHERE kode = 'dokpat'
             ) dp
             WHERE hd.ValidLB = 1
                   AND hd.nobukti = @nolab
                   AND gr.cetakan = '01'          
                   -- And @cetak like '%' + rtrim(f.kdfraction)+',%'   
                   --start-tambahan jeff: protek cetakan lama utk data lama only
                   AND hd.tglvalidasiLB >= '2012-06-01'      
             --end-tambahan jeff: 2012-12-10

             ORDER BY HeaderLv02, 
                      NoUrutLv02, 
                      HeaderLv03, 
                      NoUrutLv03, 
                      HeaderLv04, 
                      NoUrutLv04, 
                      HeaderLv05, 
                      NoUrutLv05, 
                      HeaderLv06, 
                      NoUrutLv06, 
                      HeaderLv07, 
                      NoUrutLv07, 
                      HeaderLv08, 
                      NoUrutLv08, 
                      HeaderLv09, 
                      NoUrutLv09, 
                      HeaderLv10, 
                      NoUrutLv10, 
                      s.kdfraction;
         END;
         ELSE
         BEGIN
             SELECT hd.noreg, 
                    reg.norm, 
                    reg.TglTrans AS tgldaftar, 
                    reg.JamTrans AS jamdaftar, 
                    reg.TglTrans AS tglselesai, 
                    reg.JamTrans AS jamselesai, 
                    reg.umurtahun, 
                    reg.umurbulan, 
                    reg.umurhari, 
                    ks.keterangan AS pasienseks, 
                    ISNULL(pk.nmkduser, '') AS PekerjaanPasien, 
                    hd.kddokter, 
                    m.nama AS namadokter, 
                    'Pasien Medical Check Up' AS jenispasien, 
                    hd.NoBukti AS nolab, 
                    hd.NoLabLIS AS NoLabLIS, 
                    RTRIM(reg.nama) + ' ' + RTRIM(reg.marga) AS namapasien, 
                    s.kdtest AS kdtestawal, 
                    tsawal.nmtest2 AS nmtestawal, 
                    s.kdtestakhir AS kdtest, 
                    RTRIM(tsakhir.nmtest2) AS nmtest, 
                    s.kdfraction, 
                    f.nmfraction2, 
                    ISNULL(su.nmkduser, '') AS UnitMtx, 
                    ISNULL(su2.nmkduser, '') AS UnitMtxInt, 
                    mf.nnormal AS nnormalstd, 
                    mf.nnormalint AS nnormalint, 
                    h.btsmin, 
                    h.btsmax, 
                    h.nilaistd, 
                    h.NilaiStd AS NilaiStdInt,  
                    -- h.unit, h.updater, h.tglupdate, h.chasil,   
                    -- h.nhasil, (h.nhasil * mf.KonversiSatuan) as nhasilint,  
                    h.unit, 
                    h.updater, 
                    h.tglupdate, 
                    h.chasilLIS AS cHasil, --DIganti Untuk Baca Cetak Hasil LIS (Hendrik)
                    0 AS nHasil, 
                    0 AS nhasilint, 
                    h.umurhr, 
                    h.umurmax, 
                    h.satumur, 
                    h.nsatumur, 
                    ISNULL(gr.nmgroup2, '') AS nmgroup, 
                    ISNULL(kl.nmkel, '') AS nmkel, 
                    gr.urutan, 
                    kl.Urutan AS UrutanKel, 
                    s.nmketerangan, 
                    s.kdketerangan, 
                    dp.nama, 
                    ISNULL(kf.nmkduser, '') AS kelfraction, 
                    'MCU' AS asal, 
                    'MCU' AS poliruang, 
                    hd.CatatanLB AS catatan, 
                    'Medical Check Up' AS nmkelas, 
             (
                 SELECT nilai
                 FROM setvar
                 WHERE app = 'LB_'
                       AND kode = 'dok1'
             ) AS doklab1, 
             (
                 SELECT nilai
                 FROM setvar
                 WHERE app = 'LB_'
                       AND kode = 'dok2'
             ) AS doklab2, 
             (
                 SELECT nilai
                 FROM setvar
                 WHERE app = 'LB_'
                       AND kode = 'penanggungjawab'
             ) AS pnanggungjwb, 
                    RTRIM(reg.Jalan) + ' ' + RTRIM(reg.Gang) AS AlamatPasien, 
                    ISNULL(mf.KonversiSatuan, 0) AS KonversiSatuan,

                    -- untuk hasil laboratorium agar dapat bertingkat  
                    dbo.fGetLevelHasilLB(s.KdKeterangan) AS LevelHasil, 
                    RTRIM(LEFT(CAST(s.KdKeterangan AS VARCHAR(500)), LEN(RTRIM(CAST(s.KdKeterangan AS VARCHAR(500)))) - LEN(RTRIM(s.KdFraction)))) AS KdHeader,

             -- agar bisa sort berdasarkan nomor urut yang ada di Matrix Test - Fraction  
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 2, 'Header') AS HeaderLv02, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 3, 'Header') AS HeaderLv03, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 4, 'Header') AS HeaderLv04, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 5, 'Header') AS HeaderLv05, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 6, 'Header') AS HeaderLv06, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 7, 'Header') AS HeaderLv07, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 8, 'Header') AS HeaderLv08, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 9, 'Header') AS HeaderLv09, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 10, 'Header') AS HeaderLv10, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 2, 'Header_Name') AS HeaderNameLv02, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 3, 'Header_Name') AS HeaderNameLv03, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 4, 'Header_Name') AS HeaderNameLv04, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 5, 'Header_Name') AS HeaderNameLv05, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 6, 'Header_Name') AS HeaderNameLv06, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 7, 'Header_Name') AS HeaderNameLv07, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 8, 'Header_Name') AS HeaderNameLv08, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 9, 'Header_Name') AS HeaderNameLv09, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 10, 'Header_Name') AS HeaderNameLv10, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 2, 'NoUrut') AS NoUrutLv02, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 3, 'NoUrut') AS NoUrutLv03, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 4, 'NoUrut') AS NoUrutLv04, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 5, 'NoUrut') AS NoUrutLv05, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 6, 'NoUrut') AS NoUrutLv06, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 7, 'NoUrut') AS NoUrutLv07, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 8, 'NoUrut') AS NoUrutLv08, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 9, 'NoUrut') AS NoUrutLv09, 
                    dbo.fGetNoUrutHasilLBING(s.KdKeterangan, 10, 'NoUrut') AS NoUrutLv10
             FROM mcu_HdTransaksi hd
                  INNER JOIN mcu_reg reg ON reg.noreg = hd.noreg
                  INNER JOIN medis m ON m.kode = hd.kddokter
                  INNER JOIN
             (
                 SELECT kduser, 
                        nmkduser, 
                        keterangan
                 FROM stdfielddt
                 WHERE kdfield = 'kdseks'
             ) ks ON reg.kdseks = ks.kduser
                  LEFT JOIN
             (
                 SELECT kduser, 
                        nmkduser, 
                        keterangan
                 FROM stdfielddt
                 WHERE kdfield = 'pekerjaan'
             ) pk ON pk.kduser = reg.kdpekerjaan
                  INNER JOIN lb_strukturmcu s ON s.nolab = hd.nobukti
                  INNER JOIN lb_test tsawal ON tsawal.kdtest = s.kdtest
                  INNER JOIN lb_test tsakhir ON tsakhir.kdtest = s.kdtestakhir
                  INNER JOIN lb_fraction f ON f.kdfraction = s.kdfraction
                  INNER JOIN lb_hasilmcu h ON h.nobukti = s.nolab
                                              AND h.kdfraction = s.kdfraction
                                              AND s.kdtestakhir = h.kdtest
                  LEFT JOIN lb_mtxtestfr mf ON mf.kdfraction = h.kdfraction
                                               AND mf.kdtest = s.kdtestakhir
                  LEFT JOIN
             (
                 SELECT kduser, 
                        nmkduser, 
                        keterangan
                 FROM stdfielddt
                 WHERE kdfield = 'lb_unit'
             ) su ON su.kduser = mf.unit
                  LEFT JOIN
             (
                 SELECT kduser, 
                        nmkduser, 
                        keterangan
                 FROM stdfielddt
                 WHERE kdfield = 'lb_unit'
             ) su2 ON su2.kduser = mf.unitint
                  LEFT JOIN
             (
                 SELECT kduser, 
                        nmkduser, 
                        keterangan
                 FROM stdfielddt
                 WHERE kdfield = 'lb_klfr'
             ) kf ON kf.kduser = f.deskripsi
                  LEFT JOIN lb_group gr ON gr.kdgroup = tsakhir.kdgroup
                  LEFT JOIN lb_kel kl ON kl.kdkel = tsakhir.kdkel
                                         AND tsakhir.kdgroup = kl.kdgroup
                  CROSS JOIN
             (
                 SELECT nama, 
                        nilai
                 FROM setvar
                 WHERE kode = 'dokpat'
             ) dp
             WHERE hd.ValidLB = 1
                   AND hd.nobukti = @nolab
                   AND gr.cetakan = '01'          
                   -- And @cetak like '%' + rtrim(f.kdfraction)+',%'  
                   --start-tambahan jeff: protek cetakan lama utk data lama only
                   AND hd.tglvalidasiLB >= '2012-06-01'      
             --end-tambahan jeff: 2012-12-10

             ORDER BY HeaderLv02, 
                      NoUrutLv02, 
                      HeaderLv03, 
                      NoUrutLv03, 
                      HeaderLv04, 
                      NoUrutLv04, 
                      HeaderLv05, 
                      NoUrutLv05, 
                      HeaderLv06, 
                      NoUrutLv06, 
                      HeaderLv07, 
                      NoUrutLv07, 
                      HeaderLv08, 
                      NoUrutLv08, 
                      HeaderLv09, 
                      NoUrutLv09, 
                      HeaderLv10, 
                      NoUrutLv10, 
                      s.kdfraction;
         END;
我还检查了查询是否在SQL Server上运行,下面是

我发现windows和ubuntu在调用SP时有不同的方式,我们可以从windows机器上看到下面SSMS profiler的屏幕截图

还将“select”更改为“raw”,使查询根本无法执行

windows使用RPC:Completed,而ubuntu使用SQL:BatchCompleted


我在这里遗漏了什么?

我通过从代码中删除“设置ANSI\u空值为开;设置ANSI\u警告为开”来实现这一点

    mcu_hasil_lab = DB::connection($unit_url . '_api_proitweb')
    ->select(
    EXEC splbrpt_Cetak_Hasil_MCU_new ?,?,?',
    array($nobukti, '03', '')
    );

请编辑您的问题以包括新的代码。很有可能是行数问题。“splbrpt_Cetak_Hasil_MCU_new”在SSMS中运行得很好,如果我在windows上运行我的laravel项目,但如果我在ubuntu上运行我的laravel项目,它将返回空
    mcu_hasil_lab = DB::connection($unit_url . '_api_proitweb')
    ->select(
    EXEC splbrpt_Cetak_Hasil_MCU_new ?,?,?',
    array($nobukti, '03', '')
    );