create trigger a_tri
before insert on a
declare
str varchar2(500;
begin
str:='create table b (bb varchar2(10))';
execute immediate str; --grant create any table to user;
end;
/
before insert on a
declare
str varchar2(500;
begin
str:='create table b (bb varchar2(10))';
execute immediate str; --grant create any table to user;
end;
/
解决方案 »
- 求解Oracle JDBC中invalid character问题
- 给一个Oracle 9i 的下载地址
- 如何在PL/SQl中用语句执行存储过程中的MAIN函数
- pl/sql更新无效
- oracle 10g for winx86 64
- 关于 采用 pfile 和spfile
- 如何修改Oracle8i(8.1.6.0.0)首选身份证明(OS is Win2000)
- 为什么老是说存储过程的参数的数量或类型出错?
- 如何得到oracle中属于某个用户的数据表列表(系统表除外)?
- 过程测试报错,求打救
- 很简单的存储过程(SQL Server2000转到Oracle8),比较急,在线等
- oracle9i的安装问题
execute immediate str; --grant create any table to user;
建立表的。
从Oracle8i开始可以使用本地动态SQL,这个就方便多了。
我这个用户已经有create any table的权限了,依然ora-4092
EXECUTE IMMEDIATE SQL命令字符串。DECLARE
stmt VARCHAR2(2000);
BEGIN
-- construct the sql statement
stmt := ’Create Table ’ || ia.INDEXSCHEMA || ’.’ || ia.INDEXNAME ||
’_STORAGE_TAB’ || ’(col_val, base_rowid, constraint pk PRIMARY KEY ’ ||
’(col_val, base_rowid)) ORGANIZATION INDEX AS SELECT ’ ||
ia.INDEXCOLS(1).COLNAME || ’, ROWID FROM ’ ||
ia.INDEXCOLS(1).TABLESCHEMA || ’.’ || ia.INDEXCOLS(1).TABLENAME;
EXECUTE IMMEDIATE stmt;
除非自己控制事务
在你的过程中要加一条语句就行了:)