oracle 8.1.7 存储过程存入blob字段总是失败,而使用带参数的sql语句进行操作则没有问题。是这样吗?为什么呢?
另:还有一个问题,同样也是在oracle 8.1.7中,写一个事务,其中包括对表结构的操作和表数据的操作,失败时不能正常回滚。
如:sql1 = "insert into table_test (a,b,c) value('a0','b0','c0')";
sql2 = "insert into table_test (a,b,c) value('a1','b1','c1')";
sql3 = "drop table_test";

解决方案 »

  1.   

    1、问题不明确。
    2、因为执行了DDL语句
      

  2.   

    1、比如我向表table_test中存入一条记录,其中有blob。
    table_test(xm,xb,zp) "张三","男",byte[]
    调用存储过程进行插入
    pro_table_test_add(v_xm,v_xb,v_zp)
    insert into table_test (xm,xb,zp) values(v_xm,v_xb,v_zp),这样不能成功。
    而直接调用sql="insert into table_test (xm,xb,zp) values(:v_xm,:v_xb,:v_zp)",就可以。
    2、ddl和dml语句不能放在同一个事务中吗?或者ddl根本不能放在事务中?
      

  3.   

    ddl 会执行一个 commit 操作
      

  4.   

    调用过程时后面要跟一句commit,表示提交
    EXECUTE IMMEDIATE ('COMMIT');
      

  5.   

    失败时不能回滚请使用rollback;
      

  6.   

    正是使用了rollback不能正常回滚方才提出这个问题。