我VC++中调用ORACLE的存储过程,其中有句创建临时表的SQL不能执行,但用VB调用都正确,为什么???
VC中如何调用才对(以前中SQL SERVER的都能,到底有什么差别)?????? 
create or replace procedure XXXXX
(
vvAcctId    in integer,   
vvAcctCode  in varchar,    
vvDirect    in integer,   
vvStartDay  in varchar,   
vvEndDay    in varchar,   
         vvTableName out varchar        /*临时表名*/
)
as
vvBalance               number(16,2);
  vvBalanceOrig           number(16,2);
vvBeginBalance          number(16,2);
vvBeginBalanceOrig      number(16,2);
vvtempCredits           number(16,2);
vvtempCreditsOrig       number(16,2);
vvtempDebts             number(16,2);
vvtempDebtsOrig         number(16,2);
  vvstrSQL                varchar2(4000);
  vvtempTable             varchar2(40);
  vvtempTableName         varchar2(40);
  vRect                   number(20); 
  acur integer;
  ignore integer;
  --vvTableName varchar2(100);        /*临时表名*/
begin
    select to_char(dbms_random.random) into vvtempTableName from dual;  vvtempTableName:='CNRjz'||to_char(substr(vvtempTableName,2,length(vvtempTableName)-1));
  select count(*) into vRect from all_tables where table_name=upper(vvtempTableName);
  if vRect >0 then
     vvstrSQL:='drop table '||vvtempTableName;
     execute immediate vvstrSQL;  
  end if;
vvstrSQL:='Create table '||vvtempTableName||'
(
AcctID        number(4,0),           
AcctCode      varchar(20),           
HappenDay     Date,               
  VoucherNo     varchar2(20) default '''',   
Description   varchar2(80) default '''',   
Credits       number(16,2) default 0,     
  CreditsOrig   number(16,2) default 0,     
Debts         number(16,2) default 0,     
  DebtsOrig     number(16,2) default 0,     
Balance       number(16,2) default 0,     
  BalanceOrig   number(16,2) default 0,     
IsCalBalance  char(1)      default ''y'',   
VoucherTypeId varchar2(20) default '''',    
VoucherOrder  number(20,0) default 0
)';
  acur := dbms_sql.open_cursor;
  DBMS_SQL.PARSE(acur, vvstrSQL,dbms_sql.native);
  ignore :=dbms_sql.execute(acur);
  DBMS_SQL.close_cursor(acur);
  .........
end;