从 Laravel return 空 Ubuntu 调用 SQL 服务器 SP
Calling SQL Server SP from Laravel return empty on Ubuntu
我正在从 Laravel 5.8 调用 SQL Server 2005 存储过程。如果 运行 在 windows (10) 上,它 return 的值,但是如果 ubuntu (18.04) 上的 运行,return 空数组。
$mcu_hasil_lab = DB::connection($unit_url . '_api_proitweb')
->select(
'SET ANSI_NULLS ON; SET ANSI_WARNINGS ON; EXEC splbrpt_Cetak_Hasil_MCU_new ?,?,?',
array($nobukti, '03', '')
);
我的 SP 在 SQLSVR 2005
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;
我还检查了 运行ning 在 SQL 服务器上的查询,下面是
的 screehoot
我发现 windows 和 ubuntu 在调用 SP 时有不同的方式,因为我们可以看到来自 windows 机器
的 SSMS 分析器的以下屏幕截图
还将“select”更改为“原始”,使查询根本不执行。
windows 使用 RPC:Completed,而 ubuntu 使用 SQL:BatchCompleted.
我在这里错过了什么?
我通过删除“SET ANSI_NULLS ON; SET ANSI_WARNINGS ON;”使这个工作正常来自代码
mcu_hasil_lab = DB::connection($unit_url . '_api_proitweb')
->select(
EXEC splbrpt_Cetak_Hasil_MCU_new ?,?,?',
array($nobukti, '03', '')
);
我正在从 Laravel 5.8 调用 SQL Server 2005 存储过程。如果 运行 在 windows (10) 上,它 return 的值,但是如果 ubuntu (18.04) 上的 运行,return 空数组。
$mcu_hasil_lab = DB::connection($unit_url . '_api_proitweb')
->select(
'SET ANSI_NULLS ON; SET ANSI_WARNINGS ON; EXEC splbrpt_Cetak_Hasil_MCU_new ?,?,?',
array($nobukti, '03', '')
);
我的 SP 在 SQLSVR 2005
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;
我还检查了 运行ning 在 SQL 服务器上的查询,下面是
的 screehoot我发现 windows 和 ubuntu 在调用 SP 时有不同的方式,因为我们可以看到来自 windows 机器
的 SSMS 分析器的以下屏幕截图还将“select”更改为“原始”,使查询根本不执行。
windows 使用 RPC:Completed,而 ubuntu 使用 SQL:BatchCompleted.
我在这里错过了什么?
我通过删除“SET ANSI_NULLS ON; SET ANSI_WARNINGS ON;”使这个工作正常来自代码
mcu_hasil_lab = DB::connection($unit_url . '_api_proitweb')
->select(
EXEC splbrpt_Cetak_Hasil_MCU_new ?,?,?',
array($nobukti, '03', '')
);