ALTER PROCEDURE [dbo].[Insert_p]
@Content varbinary(max),
@Length int,
@Type varchar(50),
@Id int output对于@Content varbinary(max),我VC的时候必需把数据需部读入内存,然后再进行Execute
当这个数据大到百M的时候,就会很占内存,哪位知道有些更好的办法吗?我现在VC的读取方法 BYTE* pBuf = pFile;
if(pBuf)
{
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = (long) dwFileLenth;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
if ( psa == NULL )
{
WriteAndPrintLogInfo( "TransSQLProcess SafeArrayCreate failed.\n" );
delete [] pFile;
return RET_ERROR;
}
for (long i = 0; i < (long)dwFileLenth; i++)
SafeArrayPutElement (psa, &i, pBuf++); varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa; if( pFile )
{
delete [] pFile;
pFile = NULL;
}
} _variant_t varFile(varBLOB);
CADOParameter pFileContent(CADORecordset::typeLongVarBinary, dwFileLenth, CADOParameter::paramInput);
if( !pFileContent.SetValue( varFile ) )
@Content varbinary(max),
@Length int,
@Type varchar(50),
@Id int output对于@Content varbinary(max),我VC的时候必需把数据需部读入内存,然后再进行Execute
当这个数据大到百M的时候,就会很占内存,哪位知道有些更好的办法吗?我现在VC的读取方法 BYTE* pBuf = pFile;
if(pBuf)
{
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = (long) dwFileLenth;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
if ( psa == NULL )
{
WriteAndPrintLogInfo( "TransSQLProcess SafeArrayCreate failed.\n" );
delete [] pFile;
return RET_ERROR;
}
for (long i = 0; i < (long)dwFileLenth; i++)
SafeArrayPutElement (psa, &i, pBuf++); varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa; if( pFile )
{
delete [] pFile;
pFile = NULL;
}
} _variant_t varFile(varBLOB);
CADOParameter pFileContent(CADORecordset::typeLongVarBinary, dwFileLenth, CADOParameter::paramInput);
if( !pFileContent.SetValue( varFile ) )
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货