积极答复者
数据库导出照片问题

问题
答案
全部回复
-
可能我上面的猜测误导了大家。还是贴下错误描述,大家帮我分析下吧。
事件类型: 错误
事件来源: BizTalk Server 2006
事件种类: BizTalk Server 2006
事件 ID: 5754
日期: 2009-2-8
事件: 21:13:21
用户: N/A
计算机: SJJH
描述:
A message sent to adapter "WCF-Custom" on send port "SendPort_JYPhotoToZX" with URI "oracledb://JYZX" is suspended.
Error details: Microsoft.ServiceModel.Channels.Common.TargetSystemException: ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
ORA-06512: 在 "CARD.UPDATEPHOTO", line 21
ORA-06512: 在 line 1 ---> Oracle.DataAccess.Client.OracleException ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
ORA-06512: 在 "CARD.UPDATEPHOTO", line 21
ORA-06512: 在 line 1 在 Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure)
在 Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src)
在 Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()
在 Microsoft.Adapters.OracleDB.OracleDBXmlParser.ExecuteSingleCommand(OracleCommand command, Boolean recordPresent, Boolean accumateRowAffected)
在 Microsoft.Adapters.OracleDB.OracleDBXmlParser.ExecutePackProcFunc(AdapterDataTable parsedMessage)
--- 内部异常堆栈跟踪的结尾 ---Server stack trace:
在 System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
在 System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
在 System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
在 System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult result)Exception rethrown at [0]:
在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
在 System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult result)
在 Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result)
MessageId: {177CC1B8-CA80-4496-82A3-865E4095B857}
InstanceID: {DC3B9760-AA8B-4A26-A1C0-790B2A0EE4A3}有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
-
-
我的存储过程如下:
create or replace procedure UPDATEPHOTO
(
K_REPERSISENTADDRKIND varchar2,
K_CERTNUMBER VARCHAR2,
K_PHOTO BLOB,
K_MODIFYTYPE VARCHAR2,
K_RETURN out VARCHAR2
)
is
num number;
clientname varchar2(10);
clientsex varchar2(10);
begin
if K_MODIFYTYPE = 0 then -----新增
----判断是否存在
select count(*) into num from zx_photo where CERTNUMBER = K_CERTNUMBER and REPERSISENTADDRKIND = k_REPERSISENTADDRKIND;
if num <> 0 then
k_return := 2;
return;
end if;
select name,sex into clientname,clientsex from zx_citizen where CERTNUMBER = K_CERTNUMBER and REPERSISENTADDRKIND = k_REPERSISENTADDRKIND;
insert into zx_photo values(K_CERTNUMBER, clientname,clientsex,K_PHOTO,k_REPERSISENTADDRKIND);
K_RETURN := 0;
else
----判断是否存在
select count(*) into num from zx_photo where CERTNUMBER = K_CERTNUMBER and REPERSISENTADDRKIND = k_REPERSISENTADDRKIND;
if num = 0 then
k_return := 1;
return;
end if;
update zx_photo set photo = K_PHOTO where CERTNUMBER = K_CERTNUMBER and REPERSISENTADDRKIND = k_REPERSISENTADDRKIND;
K_RETURN := 0;
end if;
end UPDATEPHOTO;
我在biztalk中现在用到的是上面标记那句。上面报错的21行,好像也是我标记的那句。应该是里面的photo产生的缓冲区问题。但是这个字段用blob定义,不管在存储过程还是在biztalk里面,我都不知道怎么设置大小。