美好的一天,我正在尝试从我的网站( PHP)导入XML文件.我做了一些关于它的研究,我发现这个 Passing datatable to a stored procedure但是对于C#.那么,是否可以发送它?

这是我的存储过程

USE [sales_web]
GO
/****** Object:  StoredProcedure [dbo].[InsertSALESPOS]    Script Date: 11/30/2016 09:19:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER PROCEDURE [dbo].[InsertSALESPOS]   

@HeaderTemp HeaderTemp readonly,@DetailTemp DetailTemp readonly,@PaymentTemp PaymentTemp readonly,@VoucherTemp VoucherTemp readonly,@LedgerTemp LedgerTemp readonly                  

AS                  
BEGIN           

set nocount on;

begin try                  
begin transaction                  

 select ID,TransactionNo,TransactionDate,TotalTransaction,LocationID,UserID,CustomerCode,SendStatus      
 into #HeaderTemp from @HeaderTemp             
 where TransactionNo not in(SELECT TransactionNo from TransactionHeader with(nolock))                  

    INSERT INTO dbo.SalesOrderHeader (TransactionNo,DocumentNo,TransDate,ETADate,ExternalDocument,Reference,RefTransNo,Category,Remark,Remark2,TermOfPayment,Currency,Rate,UseVAT,SubTotal,discPercent,discAmount,GrandTotal,TotalReceivable,FromCustomerCode,PostingStatus,PostingBy,PostingDate,CreatedDate,CreatedBy,ModifiedDate,ModifiedBy,CustomerReceivable,LocationCode,VatPercent,VatAmount,FinalReleasedDate_Outlet)                  
 select h.TransactionNo,h.TransactionNo as DocumentNo,cast(left(h.TransactionDate,len(h.TransactionDate)-6) as datetime) as TransDate,len(h.TransactionDate)-6) as datetime) as ETADate,'' as ExternalDocument,'' as Reference,'' as RefTransNo,'POS' as Category,h.CustomerCode,'' as Remark,'' as Remark2,Cast('' as Datetime) as TermOfPayment,'IDR' as Currency,Cast(1 as Float) as Rate,Cast(0 as Bit) as UseVAT,Cast(SUM(d.TotalAmountAfterdisc) as Float) as SubTotal,Cast(0 as Float) as discPercent,Cast(0 as Float) as discAmount,Cast(SUM(d.TotalAmountAfterdisc) as Float) as GrandTotal,Cast(SUM(d.TotalAmountAfterdisc) as Float) as TotalReceivable,h.CustomerCode as FromCustomerCode,Cast(0 as Bit) as PostingStatus,'' as PostingBy,Cast('' as Datetime) as PostingDate,len(h.TransactionDate)-6) as datetime) as CreatedDate,h.UserID as CreatedBy,len(h.TransactionDate)-6) as datetime) as ModifiedDate,h.UserID as ModifiedBy,h.CustomerCode as CustomerReceivable,h.CustomerCode as LocationCode,Cast(0 as Float) as VatPercent,Cast(0 as Float) as VatAmount,len(h.TransactionDate)-6) as datetime) as FinalReleasedDate_Outlet                  
    from @HeaderTemp h                   
    Inner Join @DetailTemp d on h.id = d.TransactionID and h.CustomerCode = d.CustomerCode                  
 Where h.TransactionNo IN (select TransactionNo from #HeaderTemp with(nolock))                  
    Group By h.TransactionNo,h.UserID                  

    Insert Into dbo.SalesOrderDetail                  
 SELECT h.TransactionNo + '-' + Cast(ROW_NUMBER() Over(Order By h.TransactionNo) as Varchar) as TransactionNo,h.TransactionNo as SalesOrderTransNo,h.TransactionNo as RefTransNo,(ROW_NUMBER() Over(Order By h.TransactionNo))*1000 as [LineNo],isnull(d.ItemCode,''),d.Quantity,isnull(d.MainUOMCode,'') as UOM,d.UnitPrice,0 as discountPercent,0 as VatPercent,(d.Quantity*d.UnitPrice) as AmountPrice,((d.Quantity*d.UnitPrice)-d.TotalAmountAfterdisc) as Amountdiscount,0 as AmountVat,d.TotalAmountAfterdisc as Total,d.TotalAmountAfterdisc as Receivable,d.UnitPrice as UnitPriceAfterReceivable,'' as ExtraRemark,'' as ExtraRemark2,h.UserID as ModifiedBy                   
    from @HeaderTemp h                    
    Inner Join @DetailTemp  d on h.id = d.TransactionID and h.CustomerCode = d.CustomerCode                  
 Where h.TransactionNo IN (select TransactionNo from #HeaderTemp with(nolock))                      

    Insert Into dbo.SalesOrderPayment                  
 Select h.TransactionNo + '-' + Cast(ROW_NUMBER() Over(Order By h.TransactionNo) as Varchar) as TransactionNo,p.PaymentMethodCode,p.TotalDue,p.TotalTendered                   
    From @HeaderTemp h                   
    Left Join @PaymentTemp p on h.id = p.TransactionID                   
    and h.CustomerCode = p.CustomerCode                  
    Where h.TransactionNo IN (select TransactionNo from #HeaderTemp with(nolock))                  
 --cast(left(h.TransactionDate,len(h.TransactionDate)-6) as datetime)                  

    Insert Into dbo.SalesOrderVoucher                  
 Select h.TransactionNo + '-' + Cast(ROW_NUMBER() Over(Order By h.TransactionNo) as Varchar) as TransactionNo,v.Vouchervendor as Voucher,Case When v.VoucherType = '1' Then 'NOMINAL' Else 'PERCENT' End as VoucherType,v.VoucherValue,v.VoucherAmount                   
    From @HeaderTemp h                   
    Left Join @VoucherTemp v On h.CustomerCode = v.CustomerCode And h.ID = v.TransactionID                   
 Where h.TransactionNo IN (select TransactionNo from #HeaderTemp with(nolock))      

    Insert Into dbo.ItemLedgerEntry(TransactionNo,SequenceNo,EntryType,ItemCode,Quantity,UomCode,CreatedBy)                   
 Select TransactionNo,cast(left(PostingDate,len(PostingDate)-6) as datetime) as PostingDate,Cast(Quantity as Float) as Quantity,cast(left(CreatedDate,len(CreatedDate)-6) as datetime) as CreatedDate,CreatedBy                    
  From @LedgerTemp                   
 Where DocumentNo in (select Transactionno from #HeaderTemp with(nolock))                  



 drop table #HeaderTemp                   
 Select 'Succes' as [Status]  
commit transaction                  
end try                   
begin catch                  
 rollback                          
  insert into XMLLOGERROR values(getdate(),'SALESPOS',ERROR_MESSAGE())  
end catch                  
end

我试过这种方式

$xml=simplexml_load_file($file);
                    $HeaderTemp     = array();
                    $DetailTemp     = array();
                    $PaymentTemp    = array();
                    $LedgerTemp     = array();
                    $VoucherTemp    = array(); 
                    $tambahan = array('session_id' => date('d:h:i:s'));
                    $login = str_replace(' ','',$this->input->cookie('cookie_webstore_user'));
                    $session = $login.$tambahan['session_id'];

                    foreach ($xml->HeaderTemp as $HeaderTempnya)
                                {   
                                    $HeaderTemp[] = $HeaderTempnya;
                                }
                            foreach ($xml->DetailTemp as $DetailTempnya)
                                {
                                    $DetailTemp[] = $DetailTempnya;
                                }   
                            foreach($xml->PaymentTemp as $PaymentTempnya)
                                {
                                    $PaymentTemp[] = $PaymentTempnya;
                                }
                            foreach($xml->LedgerTemp as $LedgerTempnya)
                                {
                                    $LedgerTemp[] = $LedgerTempnya;
                                }
                            foreach($xml->VoucherTemp as $VoucherTempnya)
                                {
                                    $VoucherTemp[] = $VoucherTempnya;
                                }           

                    if($VoucherTempnya != ""){
                    $this->modelmodel->showsingle("[InsertSALESPOS] '{$HeaderTemp}','{$DetailTemp}','{$PaymentTemp}','{$VoucherTemp}','{$LedgerTemp}'");
                    }else{
                    $this->modelmodel->showsingle("[InsertSALESPOS] '{$HeaderTemp}','{$LedgerTemp}'");
                    }

使用上面的脚本我得到了这个错误

Error Number: 22018/206

[Microsoft][sql Server Native Client
10.0][sql Server]Operand type clash: varchar is incompatible with HeaderTemp

[InsertSALESPOS]
‘Array’,’Array’,”,’Array’

Filename:
D:/xampp/htdocs/new_store/system/database/DB_driver.PHP

Line
Number: 691

对不起,我的英语不好.

好.我用不同的方式解决了上面的问题.如果不可能,我只是好奇,请解释原因.

使用openrowset命令可以将xml加载到sql server中的表中,有关更多信息,请访问链接https://www.mssqltips.com/sqlservertip/2899/importing-and-processing-data-from-xml-文件 – 到-sql服务器表/

是否可以将带有PHP的XML格式发送到sql server的更多相关文章

  1. Swift - 解析XML格式数据分别使用GDataXML和DDXML

    下面演示了两个非常方便高效的XML库在Swift里的调用方法。假设需要被解析的XML数据文件users.xml如下:1234567891011121314151617

  2. android – Inflate ActionBarSherlock菜单以XML格式定义

    解决方法试试这个

  3. php判断str字符串是否是xml格式数据的方法示例

    这篇文章主要介绍了php判断str字符串是否是xml格式数据的方法,结合实例形式较为详细的分析了php采用自定义函数针对xml格式数据进行验证的相关操作技巧,需要的朋友可以参考下

  4. PHP SoapClient格式错误的xml

    我正在使用PHP与SOAP中的web服务进行通信.这是我的代码:出于某种原因,XML是错误的:当XML节点名称应该是变量名时,它是如何变换的?我究竟做错了什么??谢谢更新:所以我列出了该Web服务的功能,我得到的是:我改变了我的电话,现在是:XML仍然是错误的:我仍然得到SomeKeySomeValue代替someValue中所以问题是,Web服务不能正常运行还是我的结束?如果我是你,我会尝试以对象格式设置$data.例如:

  5. php – XML Feed数据中的字符无效

    我有一个Feed,我将数据从中提取到数据库中.它以XML格式提供数据.但是,数据包括“非法”字符.例如:要么要么要么我的问题首先是,如何识别这些字符的编码,其次,如何更改编码以匹配我的数据库所需的UTF8格式?

  6. CentOS下安装protobuf

    二、protobuf安装获取安装包:官网地址或者CSDN解压安装包到指定目录、重命名:准备开始编译和安装:安装过程很简单,完成,开始使用吧~

  7. 是否可以将带有PHP的XML格式发送到sql server

    美好的一天,我正在尝试从我的网站(PHP)导入XML文件.我做了一些关于它的研究,我发现这个Passingdatatabletoastoredprocedure但是对于C#.那么,是否可以发送它?这是我的存储过程我试过这种方式使用上面的脚本我得到了这个错误ErrorNumber:22018/206[Microsoft][sqlServerNativeClient10.0][sqlServer]Op

  8. Cobertura格式的PHPUnit报道

    我有一个小PHP项目,它使用PHPUnit进行单元测试和覆盖.我想用coberturaXML格式生成覆盖率报告.我可以使用任何工具或插件来实现这一目标吗?任何帮助表示赞赏..PHPUnit生成的代码覆盖率信息日志记录的XML格式基于Clover使用的格式.

  9. PHP / SimpleXML – 为单个子项和多个子项生成不同的数组

    我正在使用SimpleXML来解析来自不同房地产经纪人的属性列表的XML提要.XMLFeed的相关部分看起来像这样:然后转换为这样的数组:我遇到的问题是,当创建数组时,单个列表的数据在数组中与多个列表的位置不同–我不确定如何解释这个,但如果我var_dump()它看起来像这样的多个项目的数组:如果我var_dump()单个列表的数组,它看起来像这样:但我需要它看起来像这样:这些数组中的每一个都代表

  10. 前端知识点总结——AJAX

    前端知识点总结——Ajax1.ajax2.HTTP协议2.1请求头2.2响应消息2.3原因短句3.缓存1.什么是缓存&工作原理4.AJAX1.名词解释2.AJAX5.使用ajax发送post请求注意两点:6.js对象数据格式1.js对象的数据格式那么她的个人信息就是她这个对象的属性。

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部