美好的一天。我试图用存储过程保存。当我直接从Sql Server运行时,它工作正常。但是,当我试图从我的Codeigniter运行它时,它无法正常工作。没有错误。
这是我的Codeigniter控制器功能:
public function save(){
extract(populateform());
$transno = $this->session->userdata('session_transno');
$recdata = $this->session->userdata('session_date');
$loginuser = $this->input->cookie("cookie_posweb_user");
$this->modelmodel->queryhandle("[DeliveryReceiptInsert] '".$transno."', '".inggris_date($recdata)."',
'".$loginuser."',
'".implode(';', $LineNo).';'."','".implode(';', $ItemCode).';'."','".implode(';', $ExtraRemark).';'."',
'".implode(';', $ExtraRemark2).';'."','".implode(';', $Quantity).';'."',
'".implode(';', $recv_qty).';'."','".implode(';', $uom).';'."','".implode(';', $ext_rmrk).';'."'");
}
这是我的模特
function queryhandle($query)
{
$this->db->query($query);
}
这是我的存储过程
USE [InventWeb]
GO
/****** Object: StoredProcedure [dbo].[DeliveryReceiptInsert] Script Date: 10/26/2016 10:38:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[DeliveryReceiptInsert]
(
--Header
@DeliveryOrderTransNo as Varchar(32),
@ReceivingDate as Datetime,
@CreatedBy as varchar(32),
--Detail
@LineNo as Varchar(Max),
@ItemCode as Varchar(Max),
@ExtraRemark as Varchar(Max),
@ExtraRemark2 as Varchar(Max),
@Quantity as Varchar(Max),
@QuantityReceived as Varchar(Max),
@UOMCode as Varchar(Max),
@ExtraRemarkReceive as Varchar(Max)
)
as
Begin
--Variable
declare @DeliveryOrderDocumentNo as varchar(32)
declare @FromCustomer as Varchar(32)
declare @ToCustomer as Varchar(32)
declare @ExternalDocumentNo as Varchar(32)
declare @CategoryCode as Varchar(4)
declare @ETADate as Datetime
declare @ShippingDocumentNo as Varchar(32)
declare @ShippingDate as Datetime
declare @ShippedBy as Varchar(16)
declare @Remark as Varchar(64)
declare @Remark2 as Varchar(64)
select
@DeliveryOrderDocumentNo = DocumentNo,
@FromCustomer = FromCustomerCode,
@ToCustomer = ToCustomerCode,
@ExternalDocumentNo = ExternalDocumentNo,
@CategoryCode = CategoryCode,
@ETADate = ETADate,
@ShippingDocumentNo = ShippingDocumentNo,
@ShippedBy = ShippedBy,
@ShippingDate = ShippingDate,
@Remark = Remark,
@Remark2 = Remark2
from TMP_deliveryorder where TransactionNo = ''+@DeliveryOrderTransNo+''
Declare @SerieCode as Varchar(32)
Declare @TransNo as Varchar(32)
Declare @DocumentNo as Varchar(32)
Declare @TempCreatedBy as Varchar(32)
Declare @TempCreatedDate as DateTime
Declare @Posisi as Int
Declare @Baris as Int
Declare @Mulai as Int
Declare @Temp as Varchar(32)
Declare @TotalRow as Int
Declare @TransNoDetail as Varchar(32)
Declare @KumpTransNoDetail as Varchar(Max)
Declare @ErrorMsg Varchar(Max)
Declare @Sql as Varchar(Max)
Declare @Find as Varchar(1)
Declare @TempLineNo as Varchar(Max)
Declare @TempXremark as Varchar(Max)
Declare @TempXremark2 as Varchar(Max)
Declare @TempXremarkReceipt as Varchar(Max)
Declare @TempQty as Varchar(Max)
Declare @TempQtyReceipt as Varchar(Max)
Declare @TempUOMCode as Varchar(Max)
Declare @TempItemCode as Varchar(Max)
Declare @DoTransNo as Varchar(32)
--Variable
--Checking Parameter
--If (@DocumentNo Is Null) set @DocumentNo = ''
If (@ReceivingDate Is Null) set @ReceivingDate = GETDATE()
If (@DeliveryOrderDocumentNo Is Null) set @DeliveryOrderDocumentNo = ''
If (@FromCustomer Is Null) set @FromCustomer = ''
If (@ToCustomer Is Null) set @ToCustomer = ''
If (@ExternalDocumentNo Is Null) set @ExternalDocumentNo = ''
If (@CategoryCode Is Null) set @CategoryCode = ''
If (@ETADate Is Null) set @ETADate = GETDATE()
If (@ShippingDocumentNo Is Null) set @ShippingDocumentNo = ''
If (@ShippingDate Is Null) set @ShippingDate = GETDATE()
If (@ShippedBy Is Null) set @ShippedBy = ''
If (@Remark Is Null) set @Remark = ''
If (@Remark2 Is Null) set @Remark2 = ''
If (@CreatedBy Is Null) set @CreatedBy = ''
If (@LineNo Is Null) set @LineNo = ''
If (@ItemCode Is Null) set @ItemCode = ''
If (@ExtraRemark Is Null) set @ExtraRemark = ''
If (@ExtraRemark2 Is Null) set @ExtraRemark2 = ''
If (@Quantity Is Null) set @Quantity = ''
If (@QuantityReceived Is Null) set @QuantityReceived = ''
If (@UOMCode Is Null) set @UOMCode = ''
If (@ExtraRemarkReceive Is Null) set @ExtraRemarkReceive = ''
If (@ReceivingDate = '') set @ReceivingDate = GETDATE()
If (@DeliveryOrderDocumentNo = '')
Begin
Raiserror('Invalid Parameter Delivery Order DocumentNo',11,-1,-1)
Return
End
If (@FromCustomer = '')
Begin
Raiserror('Invalid Parameter From Customer Code', 11,-1,-1)
Return
End
If (@ToCustomer = '')
Begin
Raiserror('Invalid Parameter To Customer Code', 11,-1,-1)
Return
End
If (@CategoryCode = '')
Begin
Raiserror('Invalid Parameter Category Code', 11,-1,-1)
Return
End
If (@ETADate = '') set @ETADate = GETDATE()
If (@ShippingDocumentNo = '')
Begin
Raiserror('Invalid Parameter Shipping Document Code', 11,-1,-1)
Return
End
If (@ShippingDate = '') set @ShippingDate = GETDATE()
If (@ShippedBy = '')
Begin
Raiserror('Invalid Parameter Shipped By', 11,-1,-1)
Return
End
If (@CreatedBy = '')
Begin
Raiserror('Invalid Parameter Created By', 11,-1,-1)
Return
End
If (@LineNo = '')
Begin
Raiserror('Invalid Parameter Line No', 11,-1,-1)
Return
End
If (@ItemCode = '')
Begin
Raiserror('Invalid Parameter Item Code', 11,-1,-1)
Return
End
If (@Quantity = '')
Begin
Raiserror('Invalid Parameter Quantity', 11,-1,-1)
Return
End
If (@QuantityReceived = '')
Begin
Raiserror('Invalid Parameter Quantity Received', 11,-1,-1)
Return
End
If (@UOMCode = '')
Begin
Raiserror('Invalid Parameter UOM Code', 11,-1,-1)
Return
End
If Not Exists (Select CustomerCode From Customer Where CustomerCode = @FromCustomer)
Begin
Raiserror('From Customer Code Not Found',11,-1,-1)
Return
End
If Not Exists (Select CustomerCode From CustomerSetup Where CustomerCode = @ToCustomer)
Begin
Raiserror('Wrong To Customer Code',11,-1,-1)
Return
End
If Not Exists (Select CategoryCode From DeliveryOrderCategory Where CategoryCode = @CategoryCode)
Begin
Raiserror('Category Code Not Found',11,-1,-1)
Return
End
--Checking Parameter
--Set Formula for Transaction No
set @SerieCode = (Select SerieCode From CustomerSetup With(READPAST) Where CustomerCode = @ToCustomer)
--Set Formula for Transaction No
Begin Transaction
--Set Transaction No for Header
Set @TransNo = dbo.TransactionNumber3 ( 'TRANS', 'DOR', 'TRANS', @SerieCode, @ToCustomer )
--Set Transaction No for Header
--Save Transaction No Header to TempNumberSeries
Insert Into TempNumberSeries Values (@TransNo)
--Save Transaction No Header to TempNumberSeries
--Set Document No for Header
Set @DocumentNo = dbo.TransactionNumber3 ( 'DOC', 'DOR', @CategoryCode, @SerieCode, @ToCustomer )
--Set Document No for Header
Set @DoTransNo = (Select TransactionNo From DeliveryOrder With(NoLock) Where DocumentNo = @DeliveryOrderDocumentNo)
--Save Document No Header to TempNumberSeries
Insert Into TempNumberSeries Values (@DocumentNo)
--Save Document No Header to TempNumberSeries
--Save Header
Insert Into DeliveryReceipt(TransactionNo, DocumentNo, ReceivingDate,
ShippingDocumentNo, ShippedBy, ShippingDate, DeliveryOrderDocumentNo,
FromCustomerCode, ToCustomerCode, ExternalDocumentNo, CategoryCode,
Remark, Remark2, ETADate, SendStatus, PostingBy, PostingDate, PostingStatus,
CreatedDate, CreatedBy, ModifiedDate, ModifiedBy)
Values (@TransNo, @DocumentNo, @ReceivingDate,
@ShippingDocumentNo, @ShippedBy, @ShippingDate, @DeliveryOrderDocumentNo,
@FromCustomer, @ToCustomer, @ExternalDocumentNo, @CategoryCode,
@Remark, @Remark2, @ETADate, 0, '', '', 0, GETDATE(), @CreatedBy, GETDATE(), @CreatedBy)
--Save Header
Execute ActivityLog_Insert @TransNo, @ShippingDocumentNo, '', 'DeliveryReceipt', 'INSERT', @CreatedBy, @ToCustomer
IF EXISTS (SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = N'dbo' AND TABLE_NAME = N'TableDOR')
BEGIN
DROP Table TableDOR;
END
--Create Table Pembantu
Create Table TableDOR
(
xId Int,
xData varchar(32)
)
--Create Table Pembantu
--Pecah String Item
set @Posisi = 1
set @Baris = 1
set @Mulai = 1
While Len(@ItemCode) >= @Posisi
Begin
If LTrim(RTrim(SubString(@ItemCode, @Posisi, 1))) = ';'
Begin
--Get Data
set @Temp = LTRIM(RTRIM(SubString(@ItemCode, @Mulai, @Posisi - @Mulai)))
--Insert Data to Tabel Pembantu
Insert Into TableDOR Values (@Baris, @Temp)
--Check Item
If not Exists (Select ItemCode From Item With(READPAST) Where ItemCode = @Temp)
Begin
raiserror('Invalid Item Code',11,-1,-1)
rollback
return
End
--Set Baris +1
set @Mulai = @Posisi + 1
set @Baris = @Baris + 1
set @Temp = ''
End
set @Posisi = @Posisi + 1
End
--Pecah String Item
--Looping Sebanyak Baris
set @TotalRow = @Baris - 1
set @Posisi = 1
set @Baris = 1
While @TotalRow >= @Baris
Begin
--Pecah String LineNo
set @Find = 'N'
set @Posisi = 1
set @Mulai = 1
while len(ltrim(rtrim(@LineNo))) >= @Posisi
Begin
If SubString(@LineNo, @Posisi, 1) = ';'
Begin
--Get Data
set @TempLineNo = substring(@LineNo, 1, @Posisi - 1)
set @LineNo = substring(@LineNo, @Posisi + 1, len(@LineNo) - @Posisi)
set @Find = 'Y'
End
set @Mulai = @Posisi + 1
set @Posisi = @Posisi + 1
if @find = 'Y'
break
else
continue
End
--Pecah String LineNo
--Pecah String Xremark
set @Find = 'N'
set @Posisi = 1
set @Mulai = 1
while len(ltrim(rtrim(@ExtraRemark))) >= @Posisi
Begin
If SubString(@ExtraRemark, @Posisi, 1) = ';'
Begin
--Get Data
set @TempXremark = substring(@ExtraRemark, 1, @Posisi - 1)
set @ExtraRemark = substring(@ExtraRemark, @Posisi + 1, len(@ExtraRemark) - @Posisi)
set @Find = 'Y'
End
set @Mulai = @Posisi + 1
set @Posisi = @Posisi + 1
if @find = 'Y'
break
else
continue
End
--Pecah String Xremark
--Pecah String Xremark2
set @Find = 'N'
set @Posisi = 1
set @Mulai = 1
while len(ltrim(rtrim(@ExtraRemark2))) >= @Posisi
Begin
If SubString(@ExtraRemark2, @Posisi, 1) = ';'
Begin
--Get Data
set @TempXremark2 = substring(@ExtraRemark2, 1, @Posisi - 1)
set @ExtraRemark2 = substring(@ExtraRemark2, @Posisi + 1, len(@ExtraRemark2) - @Posisi)
set @Find = 'Y'
End
set @Mulai = @Posisi + 1
set @Posisi = @Posisi + 1
if @find = 'Y'
break
else
continue
End
--Pecah String Xremark2
--Pecah String XremarkReceipt
set @Find = 'N'
set @Posisi = 1
set @Mulai = 1
while len(ltrim(rtrim(@ExtraRemarkReceive))) >= @Posisi
Begin
If SubString(@ExtraRemarkReceive, @Posisi, 1) = ';'
Begin
--Get Data
set @TempXremarkReceipt = substring(@ExtraRemarkReceive, 1, @Posisi - 1)
set @ExtraRemarkReceive = substring(@ExtraRemarkReceive, @Posisi + 1, len(@ExtraRemarkReceive) - @Posisi)
set @Find = 'Y'
End
set @Mulai = @Posisi + 1
set @Posisi = @Posisi + 1
if @find = 'Y'
break
else
continue
End
--Pecah String XremarkReceipt
--Pecah String Qty
set @Find = 'N'
set @Posisi = 1
set @Mulai = 1
while len(ltrim(rtrim(@Quantity))) >= @Posisi
Begin
If SubString(@Quantity, @Posisi, 1) = ';'
Begin
--Get Data
set @TempQty = substring(@Quantity, 1, @Posisi - 1)
set @Quantity = substring(@Quantity, @Posisi + 1, len(@Quantity) - @Posisi)
set @Find = 'Y'
End
set @Mulai = @Posisi + 1
set @Posisi = @Posisi + 1
if @find = 'Y'
break
else
continue
End
--Pecah String Qty
--Pecah String Qty Receipt
set @Find = 'N'
set @Posisi = 1
set @Mulai = 1
while len(ltrim(rtrim(@QuantityReceived))) >= @Posisi
Begin
If SubString(@QuantityReceived, @Posisi, 1) = ';'
Begin
--Get Data
set @TempQtyReceipt = substring(@QuantityReceived, 1, @Posisi - 1)
set @QuantityReceived = substring(@QuantityReceived, @Posisi + 1, len(@QuantityReceived) - @Posisi)
set @Find = 'Y'
End
set @Mulai = @Posisi + 1
set @Posisi = @Posisi + 1
if @Find = 'Y'
break
else
continue
End
--Pecah String Qty Receipt
--Pecah String UOM Code
set @Find = 'N'
set @Posisi = 1
set @Mulai = 1
while len(ltrim(rtrim(@UOMCode))) >= @Posisi
Begin
If SubString(@UOMCode, @Posisi, 1) = ';'
Begin
--Get Data
set @TempUOMCode = substring(@UOMCode, 1, @Posisi - 1)
set @UOMCode = substring(@UOMCode, @Posisi + 1, len(@UOMCode) - @Posisi)
set @Find = 'Y'
End
set @Mulai = @Posisi + 1
set @Posisi = @Posisi + 1
if @Find = 'Y'
break
else
continue
End
--Pecah String UOM Code
--Create Trans No Detail
Set @TransNoDetail = dbo.TransactionNumber3 ( 'TRANS', 'DORD', 'TRANS', @SerieCode, @ToCustomer )
--Create Trans No Detail
--Save Trans No Detail To TempNoSerie
Insert Into TempNumberSeries Values (@TransNoDetail)
--Save Trans No Detail To TempNoSerie
Execute UpdateTransactionNumber 'TRANS', 'DORD', 'TRANS', @SerieCode, 1, @ToCustomer
--Get Item Code
set @TempItemCode = (Select xData From TableDOR Where xId = @Baris)
--Get Item Code
Declare @IntLineNo Int
Set @IntLineNo = Cast(@TempLineNo as Int)
--Save Detail
Insert Into DeliveryReceiptDetail (TransactionNo, [LineNo], ItemCode, ExtraRemark,
ExtraRemark2, Quantity, QuantityReceived, UOMCode, ExtraRemarkReceipt, DeliveryReceiptTransNo,
CreatedDate, CreatedBy, ModifiedDate, ModifiedBy)
Values (@TransNoDetail, @IntLineNo, @TempItemCode, @TempXremark,
@TempXremark2, @TempQty, @TempQtyReceipt, @TempUOMCode, @TempXremarkReceipt, @TransNo,
GETDATE(), @CreatedBy, GETDATE(), @CreatedBy)
--Save Detail
--Set @Baris
set @Baris = @Baris + 1
--Set @Baris
End
--Looping Sebanyak Baris
--Delete TempNumberSerie
Delete TempNumberSeries Where NumberSeriesCode = @TransNo
Delete TempNumberSeries Where NumberSeriesCode = @DocumentNo
Begin Try
Set @Sql = 'Delete TempNumberSeries Where NumberSeriesCode in (' + @KumpTransNoDetail + ')'
Exec(@sql)
End Try
Begin Catch
set @ErrorMsg = (Select ERROR_MESSAGE())
set @ErrorMsg = 'Delete TempNumberSeries For Detail Failed!' + Char(13) + 'Please Call Your IT.' + Char(13) + @ErrorMsg
Raiserror('%s',11,-1,@ErrorMsg)
Rollback
Return
End Catch
--Delete TempNumberSerie
--Update NoSerieSetup
Execute UpdateTransactionNumber 'TRANS', 'DOR', 'TRANS', @SerieCode, 1, @ToCustomer
Execute UpdateTransactionNumber 'DOC', 'DOR', @CategoryCode, @SerieCode, 1, @ToCustomer
--Update NoSerieSetup
--Execute ActivityLog_Insert @DoTransNo, @DeliveryOrderDocumentNo, '', 'TMP_DeliveryOrder', 'DELETE', @CreatedBy, @ToCustomer
--Return Trans No Header
select @TransNo as TransactionNo, @DocumentNo as DocumentNo
--Return Trans No Header
Commit Transaction
End
这是我如何直接从Sql Server
运行它[DeliveryReceiptInsert] 'DO-DI-GCZAR10-407', '2016-11-01', '1500676', '1000;2000;3000;','P160012;P160013;P160014;',';;;', ';;;','1.00000000000000000000;1.00000000000000000000;1.00000000000000000000;', '1;1;1;','PCS;PCS;PCS;','12;12;12;'