我试图使用存储过程插入/更新SQL Server数据库中的表。我创建了一个存储过程和表型像下面也表结构是使用存储的程序插入/更新SQL Server数据库的问题
CREATE TYPE Dept_TT AS TABLE
(
dept_name varchar(64),
jax_dept_id char(32)
)
GO
ALTER PROCEDURE [dbo].[uspInsertorUpdateDep]
@dt_TT AS afm.Dept_TT READONLY
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRANSACTION;
UPDATE dep
SET dep.dept_name = t.dept_name,
dep.jax_dept_id = t.jax_dept_id
FROM [afm].[jax_dept] dep
INNER JOIN @dt_TT t ON dep.jax_dept_id = t.jax_dept_id
INSERT INTO [afm].[jax_dept](dept_name, jax_dept_id)
SELECT t.dept_name, t.jax_dept_id
FROM @dt_TT t
WHERE NOT EXISTS (SELECT 1
FROM [afm].[jax_dept]
WHERE jax_dept_id = t.jax_dept_id)
COMMIT TRANSACTION;
END;
当我在SQL Server Management Studio中它插入执行存储produre /更新记录的预期。我这消费中的StoredProcedure BizTalk应用程序,并尝试运行它抛出错误的应用程序一样
适配器无法传输邮件将发送端口“WcfSendPort_SqlAdapterBinding_Procedures_dbo_Custom_Dep”与URL“MSSQL://”。它将在为此发送端口指定的重试间隔后重新发送。详细信息:“Microsoft.ServiceModel.Channels.Common.XmlReaderParsingException:。意外的方法,有人呼吁确保XML是结构良好的方法调用的堆栈跟踪是:虚空WriteFullEndElement()
下面。地图和配器
我启用了跟踪,并试图看到发送到发送端口的XML,它看起来不错以下。
<ns0:uspInsertorUpdateDep xmlns:ns0="http://schemas.microsoft.com/Sql/2008/05/Procedures/dbo" xmlns:ns3="http://schemas.microsoft.com/Sql/2008/05/Types/TableTypes/afm" xmlns:ns4="http://schemas.datacontract.org/2004/07/System.Data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns0:dt_TT>
<ns3:Dept_TT>
<ns3:dept_name>XYZ</ns3:dept_name><ns3:jax_dept_id>RS</ns3:jax_dept_id></ns3:Dept_TT></ns0:dt_TT></ns0:uspInsertorUpdateDep>
不知道我缺少什么有这儿过得其他应用程序使用表类型和存储过程执行相同的操作完全正常工作。任何帮助是极大的赞赏。或者建议任何其他方法来插入/更新SQL服务器数据库
嘿。你应该考虑添加你的答案作为评论,因为它并不真正回答这个问题:) –
是的,新用户,我没有看到我可以评论他的答案 – user8141306