oracle lang raw 出错

m_leaner 2003-04-18 01:30:24
ilen = GetEnhMetaFileBits(ptucview->m_multiTrack.m_Objects1.GetAt(i)->GetEMF(),ilen,NULL);
BYTE* pbuf;
pbuf = new BYTE[ilen+2];
ilen=GetEnhMetaFileBits(ptucview->m_multiTrack.m_Objects1.GetAt(i)->GetEMF(),ilen,pbuf);
if(ilen>0)
{
SAFEARRAY* psa;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = ilen;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
for (long ii = 0; ii < ilen; ii++)
{
SafeArrayPutElement (psa, &ii, pbuf++);
}
VARIANT varBLOB;
varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa;
pRs->MoveFirst();
pRs->GetFields()->GetItem("EFM")->AppendChunk(varBLOB);///这里出错
pRs->Update();
}
...全文
24 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiezhi 2003-04-18
  • 打赏
  • 举报
回复
我想是可以的.
具体c++中怎么写我不清楚,但通常都使用添加参数,然后给参数赋值,然后执行过程的做法.
m_leaner 2003-04-18
  • 打赏
  • 举报
回复
我用的是9i如何向存储过程传递参数呢?我的问题能用上面的存储过程吗?如果用?怎么修改
jiezhi 2003-04-18
  • 打赏
  • 举报
回复
可惜没有.你可在c++里面调用存储过程处理
m_leaner 2003-04-18
  • 打赏
  • 举报
回复
哥们有没有C++代码
jiezhi 2003-04-18
  • 打赏
  • 举报
回复
给个例子:
REM long2lob.sql
REM Version 1.0, last updated 8/8/97
REM This procedure copies LONG data into a CLOB, as described in
REM Chapter 21 of _Oracle8 PL/SQL Programming_ by Scott Urman.

CREATE OR REPLACE PROCEDURE Long2Lob(
-- Uses DBMS_SQL to select a LONG column identified by p_LongQuery, and
-- returns it in p_CLob.
p_LongQuery IN VARCHAR2,
p_CLob IN OUT CLOB) AS

c_ChunkSize CONSTANT INTEGER := 100;

v_CursorID INTEGER;
v_RC INTEGER;
v_Chunk VARCHAR2(100);
v_ChunkLength INTEGER;
v_Offset INTEGER := 0;
BEGIN
-- Open the cursor, define, execute, and fetch.
v_CursorID := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(v_CursorID, p_LongQuery, DBMS_SQL.V7);
DBMS_SQL.DEFINE_COLUMN_LONG(v_CursorID, 1);
v_RC := DBMS_SQL.EXECUTE_AND_FETCH(v_CursorID);

-- Loop over the LONG, fetching c_ChunkSize characters at a time from
-- the LONG and adding them to the LOB.
LOOP
DBMS_SQL.COLUMN_VALUE_LONG(v_CursorID, 1, c_ChunkSize, v_Offset,
v_Chunk, v_ChunkLength);
DBMS_LOB.WRITE(p_CLob, v_ChunkLength, v_Offset + 1, v_Chunk);
IF v_ChunkLength < c_ChunkSize THEN
EXIT;
ELSE
v_Offset := v_Offset + v_ChunkLength;
END IF;
END LOOP;

DBMS_SQL.CLOSE_CURSOR(v_CursorID);
EXCEPTION
WHEN OTHERS THEN
-- Clean up, and reraise the error.
DBMS_SQL.CLOSE_CURSOR(v_CursorID);
RAISE;
END Long2Lob;
/

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧