F
firstshine
Unregistered / Unconfirmed
GUEST, unregistred user!
我建立了一个需要事务的mts object,他调用了一个支持事务的mts data module。
现在我希望在mts data module 的接口中建立一个函数供mts object 调用。这个函数
要实现这样的功能:命令oracle 8.0.5创建一个数据库表(create table)。我试过一下
以下两种方法,都不行。
1、从客户端传过来一个定义好的字符串(如:create table a (a1 char(1) primary key))
在mts data module 放一个datasetprovidre,adoquery,adoconnection。然后
在接口方法中调用as_execute方法,并进客户端传递过来的字符串传递过去。
mts data module中的方法在执行中报错:ora-02089,commit不允许在附属会话中
2、在oracle中定义一个存储过程,存储过程调用dbms_sql建立表。存储过程是正确的,
因为通过sqlplus可以成功的调用。然后我在mts data module中放一个adostoreproc,
通过调用adostoreproc的方法来实现。这种方法在运行是不报任何错误,但是表依然
没有产生。
我想这是two phase commit的问题,因为create table 是一个ddl,他在执行时是要求
自动提交的,但是mts的事务必须通过two phase commit来实现。可能是因为这两种提交
方法冲突造成了这个错误。不知道是不是这样?如何解决这个问题?
现在我希望在mts data module 的接口中建立一个函数供mts object 调用。这个函数
要实现这样的功能:命令oracle 8.0.5创建一个数据库表(create table)。我试过一下
以下两种方法,都不行。
1、从客户端传过来一个定义好的字符串(如:create table a (a1 char(1) primary key))
在mts data module 放一个datasetprovidre,adoquery,adoconnection。然后
在接口方法中调用as_execute方法,并进客户端传递过来的字符串传递过去。
mts data module中的方法在执行中报错:ora-02089,commit不允许在附属会话中
2、在oracle中定义一个存储过程,存储过程调用dbms_sql建立表。存储过程是正确的,
因为通过sqlplus可以成功的调用。然后我在mts data module中放一个adostoreproc,
通过调用adostoreproc的方法来实现。这种方法在运行是不报任何错误,但是表依然
没有产生。
我想这是two phase commit的问题,因为create table 是一个ddl,他在执行时是要求
自动提交的,但是mts的事务必须通过two phase commit来实现。可能是因为这两种提交
方法冲突造成了这个错误。不知道是不是这样?如何解决这个问题?